基本语法
两种 main 方法的定义
main() {
print("drat demo 12312");
}
void main() {
print("dasdas");
}
数据类型定义
var w = 12312;
w = 43534;
print(w);
int w1 = 12312;
w = 3242342;
print(w);
double w = 10;
print(w);
int q = 10.2;
String str = '12312';
str = '1231231';
print(str);
const w = '12312';
print(w);
var w = '12312';
w = w + '-- 12312';
print(w);
w = ''' 123123
dasdasdasdas
''';
var q = 'value is: $w';
print('$w $q');
var qq = DateTime.now();
print(qq);
var q2 = DateTime.now;
print(''' $w --- $q ----- $DateTime $q2''');
bool a;
a = true;
print(a);
if (a) {
print(1);
} else {
print(2);
}
final w;
w = 123123;
print(w);
final dates = new DateTime.now();
print(dates);
const dates2 = new DateTime.now();
list 类型
基础使用
var q = [1, '2', '', 4];
print(q);
print(q.length);
print(q[1]);
q.add('dasdas');
print(q);
final w = [1, 2, 3];
w.add(4);
w.length = 2;
print(w);
q.length = 2;
print('len slice $q');
var q2 = <int>[123123, 123, 123123];
print(q2);
var lengthList = List.filled(2, 1);
lengthList[0] = 1;
print(lengthList);
高级用法
final list = [];
list.add(1);
list.add('12312');
list.add('456');
final lists = list
..addAll([1, 2, 3])
..add(2);
print(lists);
list.remove(1);
list.removeAt(0);
list.removeRange(0, 2);
final list3 = [...list];
print(list3);
list.insert(1, 123);
list.insertAll(2, [1, 2, 3]);
print(list);
final firstItem = list.first;
final isEmpty = list.isEmpty;
final list2 = ['b21', 'a23'];
list2.sort();
print(list2);
int typePriority(dynamic x) {
if (x is int) return 1;
if (x is String) return 2;
if (x is bool) return 3;
return 4;
}
final list4 = [1, true, null, '2'];
list4.sort((a, b) {
final aa = typePriority(a);
final bb = typePriority(b);
if (aa != bb) {
return aa.compareTo(bb);
}
return 0;
});
print(list4);
list.forEach((item) => {print(item)});
final doubleItem = list.map((item) => item * 2);
final oneFMatch = list.firstWhere(
(item) => item == 1,
);
final oneLMatch = list.lastWhere(
(item) => item == 1,
);
final oneMatch = list.where(
(item) => item == 1,
);
final allMatch = list.every(
(item) => item is String,
);
final has_value = list.contains(1);
final index = list.indexOf(22);
final reduceList = list.reduce((pre, item) => item);
final sum = list.reduce((pre, item) {
if (item is int && pre is int) {
return item + pre;
}
return pre;
});
final sum2 = list.whereType<int>().fold(
0,
(pre, next) => pre + next,
);
print('$sum, $sum2');
空类型
final w = null;
print(w);
late String q;
q = '12312';
print(q);
var q2 = null;
String? qq;
if (q2 == null) {
qq ??= '12312';
}
print(qq);
Map 类型
Map<String, int> aa = {'aa': 12};
final k = {
'a': 1,
'b': 2,
'c': [1, true],
'w': [],
'aa': [1, 2, 3],
};
k['c'] = 123123;
print(k);
(k['w'] as List).add('1');
(k['w'] as List).add(2);
print(k);
final q = k['w'] as List;
q.length = 0;
print('$q ---- $k');
final q2 = List.from(k['aa'] as Iterable);
q2.add('qqqq');
print('$q2 ---- $k');
List<Map<String, dynamic>> users = [
{
'id': 1,
'name': 'Alice',
'tags': ['developer', 'runner'],
},
{'id': 2, 'name': 'Bob', 'tags': []},
];
类型判断
final users = [];
if (users is List) {
print(1);
} else {
print(2);
}
链式操作符
var button = Button();
button.text = 'Confirm';
button.color = 'Blue';
button.onClick(() => print('Clicked'));
var button =
Button()
..text =
'Confirm'
..color =
'Blue'
..onClick(() => print('...'));
final list = [];
final newList = list
..add(1)
..addAll([2, 3, 4]);