Android控件 Flutter Widget
View Widget
LinearLayout Column、Row
RelativeLayout Column+Row+Stack
ScrollView,ListView,RV ListView
TextView Text
EditText TextField
Dart基础:
JIT:即时编译,开发期间,更快编译,更快的重载
AOT:事前编译,release期间,更快更流畅。
数据类型:
num:数据类型的父类,其有2个子类。int,double
num num1 = -1.0;
print(num1.abs()); // 求绝对值
print(num1.toInt()); // num 转int
print(num1.toDouble()); // num 转double
String字符串:
String str1 = '字符串', str2 = "双引号";
字符串拼接:$插值表达式拼接、类似Java使用+号拼接。
bool类型:bool flag = true;
List集合:
List list = [1,2,3, '集合'];
List<int> list2 = [1,2,3]; // 只能放数字类型,泛型int
// list2 = list; // 错误,类型转换错误。dynamic的list不能赋值给int的list。
// list 生成函数
List list4 = List.generate(10, (index) => index * 2);
// 遍历list常见方式。
for(int i=0; i<list.length; i++) {
print(list[i]);
}
for(var o in list) {
print(o);
}
list.forEach((val) {
print(val);
});
map集合的使用。
Map names = {'xiaoming': '小明', 'xiaohong': '小红'};
Map ages = {}; // 初始化方法2.
ages['xiaoming']=16;
ages['xiaohong']=18;
// map遍历1
ages.forEach((k,v) {
print('$k, $v');
});
// map遍历2
Map ages2 = ages.map((k,v){
return MapEntry(v, k); // map颠倒。生成新的map。
});
// map遍历3
for(var key in ages.keys) {
print('$key, ${ages[key]}');
}
/// 科普:dynamic,var,Object三者的区别。
_moreType() {
dynamic x = 'tom'; // 动态数据类型
print(x.runtimeType); // 运行时类型:String
x = 123;
print(x.runtimeType); // int
/// 一旦被定义,确定了类型,类型就不会改变,var不是动态类型。
var a = 'tom';
print(a.runtimeType); // String
// a = 9; // 不能再被修改。
/// Object: Dart对象的基类。
Object o1 = "111"; // 确切类型,不可调用String的其他方法。
print(o1.runtimeType); // String
print(o1.toString());
}