当前位置: 首页 > news >正文

怎样做网站用的大于9kb百度快照

怎样做网站用的大于9kb,百度快照,装修全包报价明细表2021,zblog php转wordpress如何实现一个双向PK进度条 在Flutter应用中,进度条是一个非常常见的组件。而双向PK进度条则能够展示两个对立的数值,如对战中的双方得分对比等。本文将介绍如何实现一个具有双向PK效果的进度条,并支持竖直和斜角两种过渡效果。 1. 需求 我…

如何实现一个双向PK进度条

在Flutter应用中,进度条是一个非常常见的组件。而双向PK进度条则能够展示两个对立的数值,如对战中的双方得分对比等。本文将介绍如何实现一个具有双向PK效果的进度条,并支持竖直和斜角两种过渡效果。

1. 需求

我们需要一个自定义的双向PK进度条,要求如下:

  • 能够显示两个对立的数值。
  • 进度条两端有圆角。
  • 中间过渡部分可以是竖直或者45度斜角。
  • 支持自定义颜色和高度。

2. 效果

通过我们的实现,可以得到如下效果:

3. 实现思路

  1. 定义组件:创建一个自定义的PKProgressBar组件,包含左右两侧的数值、颜色、高度和过渡类型。
  2. 绘制左侧和右侧的圆角矩形:使用CustomPainter来绘制左右两部分的圆角矩形。
  3. 处理中间过渡部分:根据过渡类型绘制竖直或者45度斜角的过渡效果。

4. 实现代码

下面是实现双向PK进度条的完整代码:

import 'package:flutter/material.dart';void main() => runApp(MyApp());class MyApp extends StatelessWidget {Widget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: const Text('双向PK进度条')),body: const Center(child: Padding(padding: EdgeInsets.symmetric(horizontal: 16),child: Column(mainAxisAlignment: MainAxisAlignment.center,children: [PKProgressBar(leftValue: 75,rightValue: 150,leftColor: Colors.blue,rightColor: Colors.red,height: 20,transitionType: TransitionType.diagonal, // 设置过渡类型为斜角),SizedBox(height: 50),PKProgressBar(leftValue: 90,rightValue: 55,leftColor: Colors.brown,rightColor: Colors.green,height: 20,transitionType: TransitionType.vertical, // 设置过渡类型为竖直),],),)),),);}
}// 定义过渡类型枚举
enum TransitionType { vertical, diagonal }class PKProgressBar extends StatelessWidget {final double leftValue;final double rightValue;final Color leftColor;final Color rightColor;final double height;final TransitionType transitionType;const PKProgressBar({super.key,required this.leftValue,required this.rightValue,required this.leftColor,required this.rightColor,this.height = 20.0,this.transitionType = TransitionType.diagonal, // 默认过渡类型为斜角});Widget build(BuildContext context) {return CustomPaint(size: Size(double.infinity, height),painter: PKProgressPainter(leftValue: leftValue,rightValue: rightValue,leftColor: leftColor,rightColor: rightColor,transitionType: transitionType,),);}
}class PKProgressPainter extends CustomPainter {final double leftValue;final double rightValue;final Color leftColor;final Color rightColor;final TransitionType transitionType;PKProgressPainter({required this.leftValue,required this.rightValue,required this.leftColor,required this.rightColor,required this.transitionType,});void paint(Canvas canvas, Size size) {final paint = Paint()..style = PaintingStyle.fill;final double totalValue = leftValue + rightValue;final double leftWidth = (leftValue / totalValue) * size.width;final double rightWidth = (rightValue / totalValue) * size.width;final double radius = size.height / 2;// 左侧带圆角的矩形final leftRRect = RRect.fromLTRBAndCorners(0,0,leftWidth,size.height,topLeft: Radius.circular(radius),bottomLeft: Radius.circular(radius),);// 右侧带圆角的矩形final rightRRect = RRect.fromLTRBAndCorners(leftWidth,0,size.width,size.height,topRight: Radius.circular(radius),bottomRight: Radius.circular(radius),);// 绘制左侧部分paint.color = leftColor;canvas.drawRRect(leftRRect, paint);// 绘制右侧部分paint.color = rightColor;canvas.drawRRect(rightRRect, paint);// 根据过渡类型绘制中间部分if (transitionType == TransitionType.vertical) {// 竖直过渡final middleRect = Rect.fromLTWH(leftWidth - radius,0,2 * radius,size.height,);paint.color = rightColor;canvas.drawRect(middleRect, paint);} else if (transitionType == TransitionType.diagonal) {// 斜角过渡,形成45度斜线final leftPath = Path()..moveTo(leftWidth - size.height / 2, 0)..lineTo(leftWidth + size.height / 2, size.height)..lineTo(leftWidth - size.height / 2, size.height)..close();paint.color = leftColor;canvas.drawPath(leftPath, paint);// 斜角过渡,形成45度斜线final rightPath = Path()..moveTo(leftWidth - size.height / 2, 0)..lineTo(leftWidth, 0)..lineTo(leftWidth, size.height)..close();paint.color = rightColor;canvas.drawPath(rightPath, paint);}}bool shouldRepaint(covariant CustomPainter oldDelegate) {return false;}
}

在这个实现中,我们通过CustomPainter来自定义绘制PK进度条,并根据过渡类型绘制竖直或斜角的过渡效果。通过这些代码,你可以轻松实现一个具有双向PK效果的进度条,并根据需求调整样式和效果。

http://www.15wanjia.com/news/37172.html

相关文章:

  • 网站建设电话销售本周时事新闻概要10条
  • 做网站合同看seo
  • 长沙专业做网站公司有哪些seo实训报告
  • 1元做网站方案seminar怎么读
  • 做网站卖东西流程b站在线观看人数在哪
  • wordpress页面图片如何排版seo关键词优化软件怎么样
  • 江苏同邦建设有限公司网站宝鸡seo外包公司
  • 龙华网站建设 信科网络青岛网络推广公司哪家好
  • 上海专业高端网站建设国际时事新闻2022最新
  • 设计制作软件哈尔滨优化调整人员流动管理
  • 建设网站需要的配置深圳 网站制作
  • 网站开发 大学专业东莞寮步最新通知
  • 现在学做网站赚钱吗小学四年级摘抄新闻
  • 网站开发进度计划友情链接检索数据分析
  • admin登录网站app推广渠道在哪接的单子
  • 商城开发网站建设百度快照怎么弄
  • wordpress 文章字体颜色seo管理系统创作
  • 电商网站后台建设问题企业网站有哪些类型
  • 做内销的网站推荐淘宝关键词工具
  • 买了个区域名怎么做网站永久免费域名申请
  • 企业公司网站 北京saas建站
  • 网站建设企业哪家好武汉电脑培训学校有哪些
  • 织梦html网站地图大地seo
  • wordpress主题windowsseo优化入门教程
  • 用易语言做网站如何驾校推广网络营销方案
  • 博罗高端网站建设价格推广自己的网站
  • 初做淘宝客选哪个网站武汉最新消息今天
  • 中山网站建设文化报价营销推广方式
  • eclips怎么做网站搜索引擎营销sem
  • 淘宝上面的网站建设是靠谱app开发价格表