🎯 Dart
Язык Flutter: типы, null safety, циклы, функции, async и коллекции.
Шпаргалки · Программирование · #dart #flutter
IDE и запуск
VS Code, Android Studio, IntelliJ. dart run, dart create app, dart test, dart pub add pkg. Для UI: Flutter (flutter run).
Типы данных
int n = 1; double d = 1.5; String s = 'a'; bool b = true;
var x = 5; // тип выводится
final f = 1; // присвоить один раз
const c = 2; // константа времени компиляции
String? maybe; // допускает null
List<int> l = [1, 2]; Map<String, int> m = {'a': 1}; Set<int> st = {1};
var (a, b2) = (1, 'x'); // record
Операторы
+ - * / ~/ (целочисленное деление) %, == !=, && || !, ?? (по умолчанию), ??=, ?., ! (не null), .. (каскад), ... (spread), is, as.
Циклы
for (var i = 0; i < 3; i++) {}
for (final x in list) {}
while (cond) {}
list.forEach(print);
Функции
int add(int a, [int b = 0]) => a + b;
void greet({required String name, String hi = 'Hi'}) {}
final sq = (int x) => x * x;
Встроенные
print, int.parse, .toString(), .length, .isEmpty, DateTime.now(), Duration, jsonEncode / jsonDecode (dart:convert).
Асинхронность
Future<String> load() async {
await Future.delayed(Duration(seconds: 1));
return 'ok';
}
final r = await Future.wait([load(), load()]);
Stream<int> ticks() async* { for (var i = 0; i < 3; i++) yield i; }
Изоляты (Isolate.run) для тяжёлых вычислений.
Коллекции
list.where((x) => x > 1).map((x) => x * 2).toList();
list.fold(0, (a, b) => a + b);
m.putIfAbsent('b', () => 2);
Библиотеки по задачам
Flutter (UI), Riverpod, Bloc, Provider (состояние), dio, http (сеть), drift, Isar (БД), freezed, json_serializable (модели), go_router, mockito (тесты).