深色模式
Dart 类型
内置类型
String
String,UTF-16
编码。
原始字符串,字符串中不能使用转义,使用r
开头:
dart
var s = r'In a raw string, not even \n gets special treatment.';
使用characters
属性获取rune字符:
dart
import 'package:characters/characters.dart';
void main() {
var hi = 'Hi 🇩🇰';
print(hi);
print('The end of the string: ${hi.substring(hi.length - 1)}');
print('The last character: ${hi.characters.last}');
}
Symbol
语法:
dart
#radix
#bar
记录类型
记录类型,是匿名的、不可变的、聚合的。
记录类型中的字段分2种:
- 位置字段
- 命名字段
定义记录类型时,命名字段位于所有位置字段的后面,用大括号包裹
dart
// Record type annotation in a variable declaration:
({int a, bool b}) record;
// Initialize it with a record expression:
record = (a: 123, b: true);
字段的名称也是类型的一部分,如果两个记录类型中的字段,类型相同,但是名称不同,那么它们是不同的类型
dart
({int a, int b}) recordAB = (a: 1, b: 2);
({int x, int y}) recordXY = (x: 3, y: 4);
// recordAB 与 recordXY 是不同的类型
位置字段也可以有名称,但是此名称不影响它的形状(Shape)。
dart
(int a, int b) recordAB = (1, 2);
(int x, int y) recordXY = (3, 4);
// recordAB 与 recordXY 是相同的类型
命名字段的顺序不影响类型的判定。
集合
内置的集合类型有:list, set, map。
集合里面的操作符
展开操作
使用...
dart
var list = [1, 2, 3];
var list2 = [0, ...list];
assert(list2.length == 4);
使用...?
dart
var list2 = [0, ...?list];
assert(list2.length == 1);
控制流
collection if
普通if:
dartvar nav = ['Home', 'Furniture', 'Plants', if (promoActive) 'Outlet'];
使用if case,即模式匹配:
dartvar nav = ['Home', 'Furniture', 'Plants', if (login case 'Manager') 'Inventory'];
collection for
dartvar listOfInts = [1, 2, 3]; var listOfStrings = ['#0', for (var i in listOfInts) '#$i'];