Flutter 学习之旅(三) 数据类型(bool Li
bool
Dart 的布尔类型用bool表示,相较于java并没有什么不同,如果说非要说有什么不同的话,就是在Dart中新增加了一个assert断言这个语法中使用到了bool 这个类型,
assert(bool); 如果这个bool类型为真则可以执行到下面的语句,如果bool类型为假,则抛出异常,注意 :这个语句只在debug模式下才会生效,release 模式下不会执行这段代码
List
创建
List a=[4,5,6,7];
Dart中列表类型 用list或者[] 表示,允许存在多个空值,为了更好的拓展list,让list更具有可维护性,dart增加了 '...'(扩展运算符)和'...?'空值扩展运算符
List b=[1,...a,9,3,5];///生成b列表时优先插入1,再插入列表a,最后再插入9,3,5
输出结果
这么写只是为了证明list在插入数据时是顺序插入
空值扩展运算符的意思就是如果这个列表不为空才将它加入新的列表
结果
在说一下List 方法,
List.generate(index ,int function(int index),{bool growable=true});
前面一直没有说明dart 语句的这种新写法,由于我的理解能力有限,我也是一边学习一遍写文章,怕自己的理解误导大家,但是感觉如果在这里还不说的话,很多相对于java的新方法还不能说明,简单的说一下
先来说一个比较容易理解, 为什么方法里面还有出现用{bool growable=true}标识的入参,这种写法是表示growable,为该方法的非必要参数,
例子
但是generate 方法后面 bool growable=true 给了默认值,说明如果这个参数你不传,则默认为true,
在调用该方法时 非必要参数的赋值必须以方法名内的参数名为key,入参为参数传入该方法
例子:
_addItem这个私有方法中定义了一个 名字为index,默认值为0的非必要入参,在调用时的使用方法是,
将方法名中的入参为key 也就是index 正常的入参为 参数 ,他的写法就是 key:value 的这种写法,看着复杂,想一想挺简单的
,至于说为什么要key value的方式,如果一个方法中包含多个类型相同的非必要入参,不知道这个参数赋值给哪个变量
例子
如果调用方法只是_addItem(5); 不管是谁也看不懂这种写法,
至于generate 方法中 int function(int index) 这种写法,我只能说一下我的理解, 它的原入参是
List.generate(int length, E generator(int index), {bool growable =true});
E generator(int index)前面那个E 是泛型很好理解, generator是一个入参为int的方法,并且每个位置的索引都会去调用这个方法, dart语言的方便之处就在于他的外事万物都是对象,什么东西都可以以对象的方式传递, 现在我清楚的是这个地方传递了一个方法,至于为什么每一个位置索引都会调用这个方法,我还不是很清楚,看了list的源码也是乱糟糟,只看到了他的方法定义,没看到这个方法的实现逻辑,欢迎大家留言指教,谢谢!!!
Set
创建
Set<String> set={'1','2','3',''};
感觉set与java 的set差别不大,由于值不能重复,所以如果有空值,也只能是一个空值
结果
lookup=1的时候没打印结果
lookup 按对象查询到返回对象 如果查到了返回对象,感觉这个东西和contains没有啥区别了,我都知道这个对象是什么了,用lookup返回的也是对象本身,用contains 返回bool类型的 是不是利用lookup可以让复杂的写法更简单?这是一个疑问
Map
创建
Map map={'key':'value'};
map与java中的map用法也是基本相同的,但是在根绝key获取value时,的用法有区别,java的用法是map.get(),dart的用法是map['key'],key不能重复,但是可以为null
结果
我学习flutter的整个过程都记录在里面了
https://www.jianshu.com/c/36554cb4c804
最后附上demo 地址