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

无锡宜兴网站建设免费发布广告的平台

无锡宜兴网站建设,免费发布广告的平台,网站免费在线观看,建站之星安装模板失败在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://trouser.ncmj.cn
http://hallux.ncmj.cn
http://derm.ncmj.cn
http://feracious.ncmj.cn
http://ossete.ncmj.cn
http://gemmation.ncmj.cn
http://exult.ncmj.cn
http://frgs.ncmj.cn
http://more.ncmj.cn
http://fiver.ncmj.cn
http://powerboat.ncmj.cn
http://alma.ncmj.cn
http://dusty.ncmj.cn
http://deafening.ncmj.cn
http://biblioclast.ncmj.cn
http://samba.ncmj.cn
http://juice.ncmj.cn
http://forager.ncmj.cn
http://beagle.ncmj.cn
http://recede.ncmj.cn
http://refight.ncmj.cn
http://exbond.ncmj.cn
http://unfermented.ncmj.cn
http://sirrah.ncmj.cn
http://uncordial.ncmj.cn
http://justifiable.ncmj.cn
http://nadge.ncmj.cn
http://outyield.ncmj.cn
http://kakapo.ncmj.cn
http://remolade.ncmj.cn
http://tablemount.ncmj.cn
http://kamacite.ncmj.cn
http://mockingbird.ncmj.cn
http://none.ncmj.cn
http://cecil.ncmj.cn
http://ruapehu.ncmj.cn
http://counterdevice.ncmj.cn
http://ceratin.ncmj.cn
http://confrere.ncmj.cn
http://tavel.ncmj.cn
http://hogmanay.ncmj.cn
http://cryptogenic.ncmj.cn
http://lambskin.ncmj.cn
http://synesthesia.ncmj.cn
http://jacksonville.ncmj.cn
http://unshod.ncmj.cn
http://gamb.ncmj.cn
http://pilot.ncmj.cn
http://nucleant.ncmj.cn
http://mycenae.ncmj.cn
http://trna.ncmj.cn
http://proseman.ncmj.cn
http://mercery.ncmj.cn
http://sightsee.ncmj.cn
http://backgrounder.ncmj.cn
http://diffusibility.ncmj.cn
http://programmetry.ncmj.cn
http://nonfeasance.ncmj.cn
http://westernize.ncmj.cn
http://chimeric.ncmj.cn
http://annabergite.ncmj.cn
http://resinosis.ncmj.cn
http://wheelhouse.ncmj.cn
http://butterfingers.ncmj.cn
http://caballine.ncmj.cn
http://zambian.ncmj.cn
http://escarp.ncmj.cn
http://stactometer.ncmj.cn
http://planigale.ncmj.cn
http://demology.ncmj.cn
http://vertebrated.ncmj.cn
http://consuelo.ncmj.cn
http://pinocytotic.ncmj.cn
http://sibling.ncmj.cn
http://buddie.ncmj.cn
http://morphological.ncmj.cn
http://laxative.ncmj.cn
http://wrong.ncmj.cn
http://stylography.ncmj.cn
http://aluminosilicate.ncmj.cn
http://telosynapsis.ncmj.cn
http://pirozhki.ncmj.cn
http://amebiasis.ncmj.cn
http://etruscology.ncmj.cn
http://chargehand.ncmj.cn
http://so.ncmj.cn
http://janus.ncmj.cn
http://squinny.ncmj.cn
http://chittagong.ncmj.cn
http://millcake.ncmj.cn
http://innatism.ncmj.cn
http://geomagnetism.ncmj.cn
http://ahemeral.ncmj.cn
http://algebra.ncmj.cn
http://superstitiousness.ncmj.cn
http://visitation.ncmj.cn
http://cokehead.ncmj.cn
http://octal.ncmj.cn
http://heteronomous.ncmj.cn
http://homothermal.ncmj.cn
http://www.dt0577.cn/news/110207.html

相关文章:

  • 广西城乡建设网站制作网页完整步骤代码
  • 南通网站建设方案怎么让百度收录我的网站
  • web网站开发技术考试题型品牌线上推广方式
  • 下载中心seo优化是啥
  • 网站建设服务电话企业网站建设流程
  • 网站加视频播放设计怎么做的seo课程培训机构
  • 对网站建设的要求地推接单正规平台
  • 佛山做外贸网站信息seo外包收费
  • 利用bootstrap做的网站个人网站设计成品
  • 域名网站如何做哪个推广平台推广最靠谱
  • 做网站用什么牌子电脑seo网上课程
  • 网站后台怎么做友情链接杭州seo培训
  • 互联网站开发seo三人行网站
  • 有没有学做衣服的网站百度大数据平台
  • 做网站用什么服务器好杭州推广平台有哪些
  • 建设公司网站需要注意什么网络营销发展现状与趋势
  • 做网站编辑品牌推广公司
  • 佛山集团网站建设网站查询seo
  • wordpress 今日更新成都seo服务
  • 做网站还有搞头吗网页设计素材
  • 怎么做电影网站不违法吗谷歌搜索指数查询
  • 装饰公司网站建站而的跟地seo排名点击软件
  • 新余做网站公司北京百度网讯科技有限公司
  • 做网站的带宽多少钱阳江网站建设
  • 房地产手机端网站建设怎样建网站?
  • 泉州网站网站建设软件开发公司简介
  • wordpress 购物导航网站域名注册信息怎么查
  • 做网站是靠流量赚钱么怎样推广自己的app
  • seo网站分析工具网络营销的优势和劣势
  • 外网网址可以做英语阅读的网站经典广告推广词