十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
hello world例子
创新互联-成都网站建设公司,专注成都网站设计、成都网站建设、网站营销推广,域名申请,网络空间,绵阳服务器托管有关企业网站制作方案、改版、费用等问题,请联系创新互联。
在终端打印字符串‘Hello World!’
计算斐波那契数列
一个简单的类
计算两点距离
异步并发示例
使用了Isolate
1.面向对象
对于面向对象这个概念,相信了解Java的同学对这个概念一定不会陌生。
例如:我们有个Person Object他有很多特征和行为。
这些都是这个Person Object的属性。
也就是因为有了这些特征,行为等等才决定了这个人是谁。
那么回到Dart当中,所有的都是对象,那么在就可以可以跟进对象的属性的特征,方法等等来进行编程。
之所以我们在这里又特别强调了一下面向对象的概念,是因为这个概念在Dart语言当中,至关重要!
2.最重要的几个概念
3.Dart的部分特性
4.Dart的内置库
包名
描述
dart:asynv
异步编程,提供Future,Stream类
dart:collection
集合
dart:convert
不同类型的字符编码解码
dart:core
Dart语言核心功能,内置类型
dart:html
网页开发用到的库
dart:io
文件读写,IO相关
dart:math
数字常量以及函数,随机算法等
dart:svg
事件和动画矢量图支持
综上述所说要想学Flutter,先学Dart!关于Flutter下篇我会讲到。为什么离不开dart!
有关更多面经、核心技术笔记;自己也是从事Android开发5年有余了;整理了一些Android开发技术核心笔记和面经题纲, 如有需要的同学请私信我回复“核心笔记”或“面试”领取!
此控件的package我已经托管到了 pub仓库
如果你被墙住了,也可以看 国内镜像
使用方式就是在你的flutter pubspec.yaml中添加依赖:
然后flutter packages get更新依赖即可
最近写demo时发现Flutter自带的ListView widget很简陋,没有分隔线,没有section/row之分,也没有sectionHeader,如果要实现一个有分割线,有section区分,有section header的ListView,耦合会非常严重:
在 上没有找到封装好的这种TableView,于是乎决定自己写一个,命名为SectionTableView
本人是iOS开发,所以习惯了iOS上的UITableView的调用风格,所以在实现flutter的SectionTableView时,决定实现如下功能
为了实现这些功能,并且方便后期增加滚动功能,上下拉刷新功能,使用了StatefulWidget作为父类:
接着在对应的_SectionTableViewState中的build方法中,返回ListView:
熟悉flutter ListView的同学知道,ListView的builder类方法,有一个itemBuilder回调函数,参数是当前的上下文,和将要渲染的行索引index,index对应想要获取的某一行控件(cell或者叫ListItem),返回非空的组件就证明这个index有值,返回null就表示列表到尽头了。
我们需要做的就是对index进行映射,判断当前index对应的控件,应该是列表里的section header,还是分隔线devider,还是某一行的真正内容cell。
出于性能的考虑,不可能每次调用 _buildCell的时候,都计算一遍index对应的section和row的位置,所以定义了一个类成员变量indexPathSearch,是数组,数组长度就是ListView所有的行,当 _buildCell 的参数index大于等于indexPathSearch的长度的时候,就返回null,表示列表内容到此为止了。
indexPathSearch里每一个元素,就是index对应的section和row(称为indexPath),index指向实际行(cell)的时候,section和row都是大于等于0的,当section大于等于0,row==-1的时候,表示这里是一个section header,当两者都等于-1的时候,表示这里是一个分割线:
计算好了index到indexPath的映射,剩下的就好说了,在_buildCell中,提取indexPath并判断indexPath的内容,返回对应的控件:
这是我的第一个flutter package,目前还很简陋,flutter目前尚且如此,所以大家一起改善它,
下一步将优化如下内容:
如果大家喜欢,请多多star我的 项目GitHub
窗口小部件(Widget)可以在Paint之前应用Transform进行转换,通过Transform可以对widget进行平移、旋转、缩放等矩阵变换。不像RotatedBox在layout前就对Widget进行旋转操作,Transform是在Widget绘制前进行转换,这意味着在计算Widget的显示需要占用多少空间时,不会去考虑Transform变换。
例子
在垂直方向移动15个单位距离
例子
顺时针旋转45°
例子
放大1.5倍
我想你想要的是:target.difference(DateTime.now()).toString().split('.')[0])
使用.split('.')[0]持续时间来去掉秒的分数。
其中target是DateTime对象。flutter计算给定小时的剩余时间,以秒为单位更新flutter,因此,时间以h:m:s为单位,例如,如果给定的时间是(6:27pm),我希望得到此结果(剩余时间02:21:02)。
打印结果:Text('Timeuntil${DateFormat.Hms().format(target)}');Text(target.difference(DateTime.now()).toString().split('.')[0])