🎯 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 (тесты).