一,真实点,直接上图吧。

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),
圆圈
)

我们看看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;}

到这里我们可以发现,可以通过绘制边来进行时间轴的高度自适应,在Flutter里面又一个CustomPaint。因为画布可以知道部件自己的size那么我们就可以通过在canvas上画时间轴了。这样可以达到自适应。

下面关键代码:
通过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;}
}

三,使用:

属性 属性使用介绍 是否必须
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


2.实例1:


其他的:

Flutter时间轴相关推荐

  1. Flutter时间轴-首个

    一,真实点,直接上图吧. github地址 视频教学地址 1.位置,上图可见,时间轴可以在左边,也可以在中间,当然了可以在任何位置. 2.时间轴样式,当然了我们时间轴比仅仅限制为一个圆圈是吧,当然了你 ...

  2. Flutter时间轴(timeline)

    组件 在业务开发中经常会使用到timeline时间轴,来记录数据操作记录等,在这本人封装了一个相对较通用的时间轴组件. 示例 参数 参数 类型 必填 说明 timelineList List 是 时间 ...

  3. Xamarin效果第一篇之时间轴

    一直都想找个时间玩玩移动端,中间也去各种的调研快速的方式去开发;过程中还是太浮躁木有沉下心去学习;好早尝试过Flutter,二点让我不爽:1.配置环境好费劲(VS把我惯坏了):2.套娃的写法真是恶心; ...

  4. vue 发展历程时间轴动画_PPT时间轴如何做出创意感?海量素材免费分享,网友:收藏...

    时间轴页面,是工作型PPT中常见的页面之一.个人述职或者公司介绍PPT中,使用时间轴,能够让观众更加清晰地了解公司的发展历程. 但是,很多人在制作时间轴页面时,往往是这样的效果: 只有几行字和一根线, ...

  5. 7 个漂亮的 JavaScript 的时间轴组件 [转]

    时间轴:通过互联网技术,依据时间顺序,把一方面或多方面的 时间足迹事件串联起来,形成相对完整的记录体系,再运用图文的形式呈现给用户:时间轴可以运用于不同领域,最大的作用就是把过去的事物系统化.完整化. ...

  6. react创建组件_如何使用React创建时间轴组件

    react创建组件 These days I've been working on a new page for my website. I wanted to have a Timeline to ...

  7. 推荐5款实用的jQuery时间轴插件

    1.使用CSS3和jQuery制作的水平时间轴 这是一个可以在PC和移动端表现非常棒的水平时间轴,它由上部水平滑块和下部时间点对应的内容区块,点击时间轴上的时间点,下部内容会滑动到对应的内容区块.使用 ...

  8. js实现的时间轴效果

    今天整理以前的资料发现以前写的一个时间轴效果,当时也是网上找了很久没有找到,就自己写了一个,现在发出来给有需要的人,代码写的可能有点乱. 效果图: 下面是美工做的设计图的效果(有个美工就是好): 下面 ...

  9. R语言ggplot2可视化时间序列数据:ggplot2可视化在时间轴上添加按月的箱图(boxplot)

    R语言ggplot2可视化时间序列数据:ggplot2可视化在时间轴上添加按月的箱图(boxplot) 目录

  10. NGS的测序仪和相关技术时间轴 NGS相关数据库和项目时间轴

    NGS的测序仪和相关技术时间轴 NGS相关数据库和项目时间轴:

最新文章

  1. 今日头条安卓_今日头条加入“常用”小程序窗口,小游戏或将再次崛起?
  2. 计算机硬盘容量分盘计算,硬盘怎么规划分区大小才算科学合理? | 我爱分享网...
  3. python画散点图程序实例_【112】用python画散点图和直线图的小例子
  4. 请举出OSI七层模型在实际应用中的实例
  5. n维数组实现(可变参数表的使用)
  6. 我两年的坚持,值了!
  7. python格式化输出类型_Python print 格式化输出
  8. libz.so.1: cannot open shared object file: No such file or directory
  9. 让CentOS 5.3支持ntfs分区
  10. SQLSERVER使用密码加密备份文件以防止未经授权还原数据库
  11. 分立元器件——电感器
  12. linux 安装Gauss09 GaussView
  13. NIOSII 安装问题汇总
  14. 发布博客支持关闭图片水印啦【CSDN产品周报第10期】
  15. 微信小程序之获取当前位置附近的美食、酒店、娱乐、超市等,并显示标记
  16. 什么是API Mock测试?
  17. 【安全资讯】新形势下网络犯罪有哪些趋势和特点?检察官有话说
  18. linux shell bash -c $IFS ${IFS}
  19. Rust 官方入门程序(a Guessing Game)解读
  20. 豪江智能更新招股书:2021年净利润、毛利率双降,表现不及同行

热门文章

  1. 关于手机的各种mac地址
  2. unity 查找所以物体_unity中查找物体的方法
  3. 【修真院“纯洁”系列之十九】驱逐令
  4. MT2712 USB
  5. 狗年拜年php源码,2018新年拜年贺词【2018狗年拜年贺词】
  6. 无码科技发布第一款产品:Readhub
  7. word表格内文字行间距调整方法
  8. 服务器安装m.2固态硬盘,笔记本怎么安装M.2接口固态硬盘?笔记本M.2接口固态硬盘安装方法...
  9. bootstrap—预定义样式风格
  10. linux添加mx记录,linux下nslookup操作实例,查找域名的a记录、mx记录、cname记录、ns记录...