变量
使用 if(xx is int)这种方式来判断变量类型。
Dart是强类型语言,但变量类型可以自动推断,所有标量初始值都是null。泛型使用dynamic来表示,列如:
dynamic、List<dynamic>;
不可变变量、静态变量,使用:final、const来表示。const的值在编译时确定,final的值需要在运行时确实,且不可修改。const用来修饰静态的变量,final修复不可变得变量。
final name = 'henry';
const age = 15;
const double = 3.1415 * age;
const常值是防止内容变化.final常量是防止变量寻址,final变量用来提升代码的安全性。
final list = []; //虽然是const修饰[],但是只能代表当前下[]不可变
final list1 = const[];
const list2 = [];
const list3 =
list.add(4) //成立,由于final修饰后变量只要是内存地址不变的前提下都可以修改。
list1.add(4) //不成立,由于list1指向一个常值不可修改。
list2.add(4) //不成立,const对应常值,初始化后不论是值、内存地址都不可修改。
var变量
var name = 'henry';
String name = 'henry';
var bool = true;
var boo = false; //布尔类型只允许使用true、false来表示。
符文数据类型(Rune)
rune是UTF-32码点组成的字符串,可以相互转换。
其他数据类型(使用runtimeType方法获取类型)
数字类型
var i = 1.45e5; //输出:145000
var one = int.parse(1) //初始化int类型
var two = double.parse(1.1) //初始化double类型
assert(one == 1) //常数逻辑判断
字符串
var str = two.toString() //常数转为字符串
String str = 3.1415926.toStringFixed(2); //取小数点后两位
assert(str == 3.14); //字符串逻辑判断
var s1 = 'liuuuii';
var s2 = 'l\'suuu'; //输出 : i'suuu 如果使用单引号则单引号需要转义
var s3 = "l'suuu"; //输出 : i'suuu 如果使用双引号则单引号无需转义
var s4 = ''' liu
heng
shi
''' //如果需要换行符则使用'''符号,字符串格式保留。与swift相同
var s5 = r'\naaa'; //输出:\naaa,如果在字符串前加r,则表示后方字符串中任意字符都不做转义
var s6 = 'dffdsf$s5'; //输出:dffdsf\naaa $+变量名、 ${表达式},实现字符串的插值。
var s7 = 'dddd${s6.toString()}';
var b = assert(s7.isEmpty); //字符串为空
数组
var a = const[1,2,3];//特殊情况,a的值(内存地址)可以改变,但是当前数组被const修饰,是无法修改的.
list<widget> = []; //定义类型为<widget>的数组
map(哈希表、字典)
类型定义如:(map<String, num> json)
var giraffe = {'1':'asd', '2':'asd', '3':'asd'};
giraffe.runtimeType //输出:JsLinkedHashMap<String, String>
var giraffe = {'1':'asd', '2':'asd', 3:'asd'};
giraffe.runtimeType //输出:JsLinkedHashMap<Object, String>
giraffe['1'] = 'bsa' //值修改
var elephant = const {'1':'asd', '2':'asd', 3:'asd'};
elephante['1'] = 'bsa' //不成立,当前map值无法修改
elephante = {'a':'lili'} //成立