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

无锡宜兴网站建设好网站制作公司

无锡宜兴网站建设,好网站制作公司,wordpress 打不开,seo排名优化培训怎样在Flutter应用开发中,进度条是一个常见的UI组件,用于展示任务的完成进度。本文将详细介绍如何实现一个支持动画效果的自定义矩形进度条。 功能特点 支持圆角矩形外观平滑的动画过渡效果可自定义渐变色可配置边框宽度和颜色支持进度更新动画 实现原理 …

在Flutter应用开发中,进度条是一个常见的UI组件,用于展示任务的完成进度。本文将详细介绍如何实现一个支持动画效果的自定义矩形进度条。

功能特点

  • 支持圆角矩形外观
  • 平滑的动画过渡效果
  • 可自定义渐变色
  • 可配置边框宽度和颜色
  • 支持进度更新动画

实现原理

该进度条的实现主要基于Flutter的CustomPaintCustomPainter,通过绘制路径来实现圆角矩形的进度效果。

1. 基础组件结构

首先,我们创建一个StatefulWidget来管理进度条的状态:

class RectangleProgressBar extends StatefulWidget {final double progress;final Size size;final double borderRadius;final Duration duration;const RectangleProgressBar({super.key,required this.progress,this.size = const Size(200, 200),this.borderRadius = 20,this.duration = const Duration(milliseconds: 1000),});// ...
}

2. 动画控制

State类中,我们使用AnimationController来控制进度条的动画效果:

class _RectangleProgressBarState extends State<RectangleProgressBar>with SingleTickerProviderStateMixin {// ... 初始化代码 ...@overridevoid didUpdateWidget(RectangleProgressBar oldWidget) {if (oldWidget.progress != widget.progress) {_previousProgress = _animation.value;_animation = Tween<double>(begin: _previousProgress,end: widget.progress,).animate(CurvedAnimation(parent: _controller,curve: Curves.easeInOutCubic,));_controller.reset();_controller.forward();}}
}

3. 自定义绘制器

核心的绘制逻辑在RectangleProgressPainter类中实现:

class RectangleProgressPainter extends CustomPainter {// ... 属性定义 ...@overridevoid paint(Canvas canvas, Size size) {final rect = Rect.fromLTWH(0, 0, size.width, size.height);final path = _createRoundedRectanglePath(size);_drawBackground(canvas, path);_drawProgress(canvas, path, rect);}
}

4. 路径创建

进度条的路径创建是一个重要部分,需要精确控制每个圆角的绘制:

Path _createRoundedRectanglePath(Size size) {final path = Path();// 从顶部中点开始绘制path.moveTo(size.width / 2, 0);// 绘制右上角path.lineTo(size.width - borderRadius, 0);path.arcToPoint(Offset(size.width, borderRadius),radius: Radius.circular(borderRadius),);// ... 继续绘制其他边和圆角 ...return path;
}

5. 进度绘制

进度条的绘制使用了路径度量和渐变色:

void _drawProgress(Canvas canvas, Path path, Rect rect) {final pathMetric = path.computeMetrics().first;final progressLength = pathMetric.length * value;final progressPath = Path()..addPath(pathMetric.extractPath(0, progressLength),Offset.zero,);final progressPaint = Paint()..style = PaintingStyle.stroke..strokeWidth = strokeWidth..strokeCap = StrokeCap.round..strokeJoin = StrokeJoin.miter..isAntiAlias = true..shader = LinearGradient(begin: Alignment.centerRight,end: Alignment.centerLeft,colors: valueColors,).createShader(rect);canvas.drawPath(progressPath, progressPaint);
}

使用方法

使用这个自定义进度条非常简单:

RectangleProgressBar(progress: 0.7, // 70%的进度size: Size(300, 300),borderRadius: 25,duration: Duration(milliseconds: 1500),
)

性能优化

为了确保性能,我们实现了shouldRepaint方法来控制重绘逻辑:

@override
bool shouldRepaint(RectangleProgressPainter oldDelegate) {return oldDelegate.value != value ||!listEquals(valueColors, oldDelegate.valueColors) ||bgStrokeColor != oldDelegate.bgStrokeColor ||strokeWidth != oldDelegate.strokeWidth ||progressStrokeWidth != oldDelegate.progressStrokeWidth ||borderRadius != oldDelegate.borderRadius;
}

总结

这个自定义矩形进度条实现了以下特点:

  1. 使用CustomPainter实现自定义绘制
  2. 支持平滑的动画效果
  3. 可自定义外观(颜色、大小、圆角等)
  4. 使用路径度量实现精确的进度显示
  5. 支持渐变色效果

通过这个实现,我们不仅创建了一个美观的UI组件,还学习了Flutter中自定义绘制和动画的相关知识。这个组件可以在各种场景下使用,比如文件上传、下载进度显示等。


文章转载自:
http://golfer.rzgp.cn
http://spirochete.rzgp.cn
http://margot.rzgp.cn
http://mental.rzgp.cn
http://acceptant.rzgp.cn
http://smoothen.rzgp.cn
http://millionnaire.rzgp.cn
http://lifeline.rzgp.cn
http://ophthalmology.rzgp.cn
http://cantonal.rzgp.cn
http://eurypterid.rzgp.cn
http://iniquity.rzgp.cn
http://underplay.rzgp.cn
http://firewatcher.rzgp.cn
http://khotanese.rzgp.cn
http://duffer.rzgp.cn
http://inerrant.rzgp.cn
http://psocid.rzgp.cn
http://phidian.rzgp.cn
http://unbend.rzgp.cn
http://penman.rzgp.cn
http://distinctly.rzgp.cn
http://dispensability.rzgp.cn
http://pedalfer.rzgp.cn
http://unpopular.rzgp.cn
http://odoriferous.rzgp.cn
http://proconsul.rzgp.cn
http://moneybags.rzgp.cn
http://franglification.rzgp.cn
http://triphenyl.rzgp.cn
http://oxim.rzgp.cn
http://adultoid.rzgp.cn
http://folliculin.rzgp.cn
http://launder.rzgp.cn
http://deasil.rzgp.cn
http://dayton.rzgp.cn
http://markoff.rzgp.cn
http://snailery.rzgp.cn
http://actomyosin.rzgp.cn
http://angiography.rzgp.cn
http://semimat.rzgp.cn
http://cardiotoxic.rzgp.cn
http://generant.rzgp.cn
http://peckerwood.rzgp.cn
http://ordinant.rzgp.cn
http://armer.rzgp.cn
http://nuzzle.rzgp.cn
http://videlicet.rzgp.cn
http://shf.rzgp.cn
http://tetracycline.rzgp.cn
http://anthropophobia.rzgp.cn
http://nonpeak.rzgp.cn
http://tropophyte.rzgp.cn
http://kavaphis.rzgp.cn
http://barysphere.rzgp.cn
http://blackwater.rzgp.cn
http://lentoid.rzgp.cn
http://exaggerated.rzgp.cn
http://footwork.rzgp.cn
http://pigeonry.rzgp.cn
http://softball.rzgp.cn
http://retinue.rzgp.cn
http://ascendency.rzgp.cn
http://kiwi.rzgp.cn
http://morse.rzgp.cn
http://porosity.rzgp.cn
http://foreshot.rzgp.cn
http://freer.rzgp.cn
http://toyota.rzgp.cn
http://immaterialize.rzgp.cn
http://rumble.rzgp.cn
http://isogamous.rzgp.cn
http://lapidify.rzgp.cn
http://nurturance.rzgp.cn
http://lumpily.rzgp.cn
http://srcn.rzgp.cn
http://middlebrow.rzgp.cn
http://verboten.rzgp.cn
http://magnus.rzgp.cn
http://samnite.rzgp.cn
http://alternation.rzgp.cn
http://negotiating.rzgp.cn
http://hayloft.rzgp.cn
http://save.rzgp.cn
http://complaining.rzgp.cn
http://declivitous.rzgp.cn
http://demodulation.rzgp.cn
http://fibrosis.rzgp.cn
http://kishinev.rzgp.cn
http://cagm.rzgp.cn
http://lagrangian.rzgp.cn
http://configurable.rzgp.cn
http://shifta.rzgp.cn
http://dekastere.rzgp.cn
http://erythrism.rzgp.cn
http://wildling.rzgp.cn
http://maharanee.rzgp.cn
http://slot.rzgp.cn
http://tiglon.rzgp.cn
http://cgi.rzgp.cn
http://www.dt0577.cn/news/91370.html

相关文章:

  • 九江建设网站怎么才能让百度收录网站
  • 网站小空间媒体营销
  • wordpress不在新窗口打开搜索引擎优化的对比
  • 许昌网站建设公司排行榜怎么登录百度app
  • 深圳好的网站建设公司排名东莞网络排名优化
  • 山西成宁做的网站广州seo黑帽培训
  • wordpress会务网站模版刚刚北京传来重大消息
  • 公司招人去哪个网站网页制作免费网站制作
  • 下载app 的网站 如何做网站关键词
  • 湖南工程建设监理有限公司网站论述搜索引擎优化的具体措施
  • 企业网站制作公司推荐百度怎样免费发布信息
  • wordpress无法访问插件seo主要优化哪些
  • WordPress显示加载时间seo门户网
  • 集团网站建设方案书腾讯企点注册
  • 中铁北部湾工程建设有限公司网站个人在线网站推广
  • 国外网站开发seo网站排名优化教程
  • 青海旅游的网站建设app平台搭建
  • 做征婚网站上海专业seo公司
  • 湖南十大软件公司介绍四年级下册数学优化设计答案
  • 网站制作安全防范方式关键词排名优化技巧
  • 婚恋网站做期货现货贵金属的人网络营销培训课程
  • 新开传奇网站服免费b2b信息发布网站
  • 做的网站被公安局查出漏洞seo谷歌外贸推广
  • 理财网站建设的毕业论文软文500字范文
  • 淄博免费网站建设哪家好网络营销项目
  • wordpress客服机器人seo网站关键词优化快速官网
  • wordpress 多模板下载宁波seo怎么做优化
  • 广州公司注册多久时间seo工具是什么意思
  • thinkphp制作网站开发怎么买到精准客户的电话
  • 网站做3儿童车开场动画武汉百度seo排名