前言
Flutter是谷歌的移动UI框架,可以快速在IOS和Android上构建高质量的原生用户界面。Flutter可以和现有代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。它的的底层是用Dart写的。
版本
1.x是稳定版
2.x是新版,2018年发布
通过Dart 2,我们大大加强和简化了类型系统,清理了语法,并从头开始重建了大量开发人员工具链,使移动和Web开发更加愉快和高效。
(以后用Dart2来进行开发)
第一个Dart程序
数据类型
变量
- 使用var来声明,有不同类型的值。
-
- var a = 10; print(a);
- 注:一个变量不能重复声明
- 未初始化时,默认的值为null
-
- var a; print(a); // null
- final 不能重复赋值
-
- final b = 30;
- ?? 非空判断
注意
- var是泛型,不规定数据类型,对数据类型进行自动识别
-
- 你使用var的时候,如果你只声明,不赋值,那么它所能够拾别的数据类型是dynamic,也就是泛型
-
- 如果你声明+赋值,那么它会自动对赋值的数据进行数据类型的拾别,比如第一张图,a的类型就是String,而第二张图,a的类型就是dynamic泛型
-
final是只赋值一次,针对的是基本类型,如果是map键值对或者List,里面的属性后面是可以修改的,但是const是什么情况都不可以修改的
- const 定义的值一旦声明就不能修改
- final和const两个都是声明和赋值要同时进行
- const后面的值不能是运行后的结果,也就是说函数的运行结果不能用const接收,而final是可以的
- var、final、const 三者都不规定数据类型
- final的使用场景
-
- 修视变量、修饰参数
常量
- const声明常量
- 使用const声明的必须是编译器的常量。
-
- 注:final 赋值后可以再修改,const不能修改
数据类型
- 数值型 Number
- 字符串 String
- 布尔型 Boolean
- 列表 List
- 键值对 Map
- Runes、Synbols(不常用)
数值
- num 分为整形 int, 浮点型 double, 二者都继承自num
- 运算符: + - * / ~/ %
- 常用属性: isNaN、isEven、isOdd 等
- 常用方法: abs()、round()、floor() // 绝对值,四舍五入、取整...
注意
- ~/ 表示先除后取整
字符串
- 使用单引号,双引号创建
- 使用三个引号 或者 三个双引号 创建多行字符串
- 使用r创建原始raw字符串
- 插值表达式 ${ } 添加变量
- 运算符: +、*、== 、[]
- 字符串方法: replaceAll
注意
- 三个单引号可以支持多行
- 单个变量花括号要省略
布尔值
- bool 的结果是 true/false
- 与或非:&& || !
List(数组)
- 创建List: List list = [1, 2, 3, "hello", true];
- 创建不可变的List List list2 = const[1,2,3];
- 创建固定类型的List List list3 = [1, 2, 3];
- 构造创建: List list4 = new List();
List常用操作
- []取值,length获取长度
- add(),相当于push;insert()插入指定位置,第一项是索引,第二项是value
- remove(),clear()
- forEach()
- indexOf(),lastIndexOf()...
Map(键值对)
- 创建 Map: Map language = { "first": "dart", "second": "java" };
- 创建不可变的 Map: Map language = const { "first": "dart", "second": "java" };
- 构造创建: Map language = new Map();
注意:
- Map的key可以是不同的数据类型
常用操作
- [], length
- isEmpty, isNotEmpty
- keys, values
- forEach()
- remove(key)
- containsKey(key) // 是否包含属性名
- containsValue(val) // 是否包含属性值
流程控制:选择结构、循环结构
- if判断 / 三元运算符
- for循环
- while, do while
- continue, break
- switch ... case
- break, continue