Flutter时间轴
一,真实点,直接上图吧。
github地址
视频教学地址
1.位置,上图可见,时间轴可以在左边,也可以在中间,当然了可以在任何位置。
2.时间轴样式,当然了我们时间轴比仅仅限制为一个圆圈是吧,当然了你的部件能写多炫酷,砸门的时间轴也可以,上图(圆里面爱,图片,黄色背景文字,其实都是一长串部件)。
3.线,我们需要和内容的高度一样,这里估计是很多人的痛点,没法自适应,这里也做到了。线的粗细,颜色,虚线间隔,渐变...当然砸门也实现了
二 ,看一眼吧 如何实现。
群里很多人都需要一个时间轴,对于时间轴自适应高度难倒了很多人。当然了,我试着搞了搞,搞了两种思路,
第一种有点low但是也能实现。我们知道Container是一个部件,它有一个decoration属性里面又一个
boder,而且boder可以设置left,top,right,bootom等让其显示。
return Scaffold(body: ListView.builder(itemCount:10,itemBuilder:(context,index){return Column(crossAxisAlignment:CrossAxisAlignment.start,children: <Widget>[Container(margin:EdgeInsets.only(left:10),height: 200,decoration: BoxDecoration(border: Border(left: BorderSide(width: 3,color: Colors.deepOrange,))),child:Text("内容"),),],);},),);
当然很low吧。我们可以看到绘制完成时候可以通过border来绘制边来画出线。其实到这里我想简单的时间轴不用我写了吧?
Colum(
圆圈,
容器(border),
圆圈
)
switch (left.style) {case BorderStyle.solid:paint.color = left.color;path.reset();path.moveTo(rect.left, rect.bottom);path.lineTo(rect.left, rect.top);if (left.width == 0.0) {paint.style = PaintingStyle.stroke;} else {paint.style = PaintingStyle.fill;path.lineTo(rect.left + left.width, rect.top + top.width);path.lineTo(rect.left + left.width, rect.bottom - bottom.width);path.lineTo(rect.left, rect.bottom);}canvas.drawPath(path, paint);break;case BorderStyle.none:break;}
下面关键代码:
通过CustomPaint来绘制时间线。设置绘制的各种样式。更加灵活相比与border
class MyPainterLeft extends CustomPainter {//虚线double DottedLineLenght;//虚线之间的间距double DottedSpacing;double circleSize;Gradient mygradient;bool isDash;Color LineColor;double paintWidth;MyPainterLeft({this.circleSize,this.mygradient,this.isDash = false,this.DottedLineLenght = 5.0,this.DottedSpacing = 10.0,this.LineColor = Colors.redAccent,this.paintWidth=4});Paint _paint = Paint()..strokeCap = StrokeCap.square //画笔笔触类型..isAntiAlias = true;//是否启动抗锯齿//画笔的宽度Path _path = new Path();@overrideFuture paint(Canvas canvas, Size size) {final Rect arcRect = Rect.fromLTWH(10, 5, 4, size.height);_paint.style = PaintingStyle.stroke; // 画线模式_paint.color = this.LineColor;_paint.strokeWidth=this.paintWidth;_path.moveTo(size.width, 0); // 移动起点到(20,40)_path.lineTo(size.width, size.height); // 画条斜线if (mygradient != null) {_paint.shader = mygradient.createShader(arcRect);}if (mygradient != null && isDash) {canvas.drawPath(dashPath(_path,dashArray: CircularIntervalList<double>(<double>[DottedLineLenght, DottedSpacing]),dashOffset: DashOffset.absolute(1)),_paint,);} else {canvas.drawPath(_path, _paint);}}@overridebool shouldRepaint(CustomPainter oldDelegate) {return true;}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
三,使用:
属性 | 属性使用介绍 | 是否必须 |
---|---|---|
int index | 列表的index,用来搞定时间轴部件 | true |
double timeAxisSize | 时间轴部件大小 | true |
double contentLeft | 内容距离时间轴距离 | false |
Widget leftWidget | 请展示你的技术时间轴部件 | false |
double lineToLeft | 时间轴距屏幕左边距离 | false |
Gradient mygradient | 时间轴线是否渐变 | false |
bool isDash | 时间轴线是否是虚线 true or false | false |
double DottedLineLenght | 虚线部分线段长度 | false |
double DottedSpacing | 虚线间隔 | false |
double marginLeft | 时间轴线开始画的起点。 | false |
Alignment alignment | 时间轴显示的位置 left | center |
Widget centerRightWidget | 如果时间轴在中间,左边内容 | false |
Widget cententWight | 如果时间轴在中左边,中间的内容 | false |
Widget centerLeftWidget | 如果时间轴在中间,右边内容 | false |
double timeAxisLineWidth | 时间轴线的宽度 | false |
1.pubspec.yaml里面
flutter_time_axis:
git: https://github.com/luhenchang/flutter_time_axis.git
Flutter时间轴相关推荐
- Flutter时间轴-首个
一,真实点,直接上图吧. github地址 视频教学地址 1.位置,上图可见,时间轴可以在左边,也可以在中间,当然了可以在任何位置. 2.时间轴样式,当然了我们时间轴比仅仅限制为一个圆圈是吧,当然了你 ...
- Flutter时间轴(timeline)
组件 在业务开发中经常会使用到timeline时间轴,来记录数据操作记录等,在这本人封装了一个相对较通用的时间轴组件. 示例 参数 参数 类型 必填 说明 timelineList List 是 时间 ...
- Xamarin效果第一篇之时间轴
一直都想找个时间玩玩移动端,中间也去各种的调研快速的方式去开发;过程中还是太浮躁木有沉下心去学习;好早尝试过Flutter,二点让我不爽:1.配置环境好费劲(VS把我惯坏了):2.套娃的写法真是恶心; ...
- vue 发展历程时间轴动画_PPT时间轴如何做出创意感?海量素材免费分享,网友:收藏...
时间轴页面,是工作型PPT中常见的页面之一.个人述职或者公司介绍PPT中,使用时间轴,能够让观众更加清晰地了解公司的发展历程. 但是,很多人在制作时间轴页面时,往往是这样的效果: 只有几行字和一根线, ...
- 7 个漂亮的 JavaScript 的时间轴组件 [转]
时间轴:通过互联网技术,依据时间顺序,把一方面或多方面的 时间足迹事件串联起来,形成相对完整的记录体系,再运用图文的形式呈现给用户:时间轴可以运用于不同领域,最大的作用就是把过去的事物系统化.完整化. ...
- react创建组件_如何使用React创建时间轴组件
react创建组件 These days I've been working on a new page for my website. I wanted to have a Timeline to ...
- 推荐5款实用的jQuery时间轴插件
1.使用CSS3和jQuery制作的水平时间轴 这是一个可以在PC和移动端表现非常棒的水平时间轴,它由上部水平滑块和下部时间点对应的内容区块,点击时间轴上的时间点,下部内容会滑动到对应的内容区块.使用 ...
- js实现的时间轴效果
今天整理以前的资料发现以前写的一个时间轴效果,当时也是网上找了很久没有找到,就自己写了一个,现在发出来给有需要的人,代码写的可能有点乱. 效果图: 下面是美工做的设计图的效果(有个美工就是好): 下面 ...
- R语言ggplot2可视化时间序列数据:ggplot2可视化在时间轴上添加按月的箱图(boxplot)
R语言ggplot2可视化时间序列数据:ggplot2可视化在时间轴上添加按月的箱图(boxplot) 目录
- NGS的测序仪和相关技术时间轴 NGS相关数据库和项目时间轴
NGS的测序仪和相关技术时间轴 NGS相关数据库和项目时间轴:
最新文章
- 今日头条安卓_今日头条加入“常用”小程序窗口,小游戏或将再次崛起?
- 计算机硬盘容量分盘计算,硬盘怎么规划分区大小才算科学合理? | 我爱分享网...
- python画散点图程序实例_【112】用python画散点图和直线图的小例子
- 请举出OSI七层模型在实际应用中的实例
- n维数组实现(可变参数表的使用)
- 我两年的坚持,值了!
- python格式化输出类型_Python print 格式化输出
- libz.so.1: cannot open shared object file: No such file or directory
- 让CentOS 5.3支持ntfs分区
- SQLSERVER使用密码加密备份文件以防止未经授权还原数据库
- 分立元器件——电感器
- linux 安装Gauss09 GaussView
- NIOSII 安装问题汇总
- 发布博客支持关闭图片水印啦【CSDN产品周报第10期】
- 微信小程序之获取当前位置附近的美食、酒店、娱乐、超市等,并显示标记
- 什么是API Mock测试?
- 【安全资讯】新形势下网络犯罪有哪些趋势和特点?检察官有话说
- linux shell bash -c $IFS ${IFS}
- Rust 官方入门程序(a Guessing Game)解读
- 豪江智能更新招股书:2021年净利润、毛利率双降,表现不及同行
热门文章
- 关于手机的各种mac地址
- unity 查找所以物体_unity中查找物体的方法
- 【修真院“纯洁”系列之十九】驱逐令
- MT2712 USB
- 狗年拜年php源码,2018新年拜年贺词【2018狗年拜年贺词】
- 无码科技发布第一款产品:Readhub
- word表格内文字行间距调整方法
- 服务器安装m.2固态硬盘,笔记本怎么安装M.2接口固态硬盘?笔记本M.2接口固态硬盘安装方法...
- bootstrap—预定义样式风格
- linux添加mx记录,linux下nslookup操作实例,查找域名的a记录、mx记录、cname记录、ns记录...