Типы и null safety
Примитивные типы
dart
int count = 1;
double price = 9.99;
bool ok = true;
String name = 'Ada';var, dynamic, Object?
dart
var a = 1;
dynamic b = 1;
b = 'now string';
Object? c = 1;
c = 'string';
c = null;varвыводит тип из значения и дальше тип фиксируетсяdynamicотключает проверку типов при обращенияхObject?позволяет хранить любое значение, включаяnull, но без “магии”dynamic
Nullable типы
dart
String? maybeName;
int? maybeAge;Операторы ?., ??, ??=, !
dart
String? input;
final len = input?.length;
final name = input ?? 'Guest';
int? count;
count ??= 0;
String? s;
final sure = s!;Late
dart
late final String token;
void init() {
token = 'abc';
}late удобно, когда значение точно будет присвоено до использования, но не в момент объявления.
Сравнение и приведение
dart
Object value = 'hello';
if (value is String) {
print(value.toUpperCase());
}
final maybeString = value as String;Enum
dart
enum Status {
idle,
loading,
success,
error,
}