Flutter (Dart) шпаргалка

Описаны некоторые основные конструкции языка Dart.

Содержимое страницы

Вот справочник по Flutter (Dart) с наиболее полезными командами и конструкциями языка:

разработчик играет на флейте и дarts Выше приведено изображение, сгенерированное ИИ (Flux 1 dev model) разработчика, играющего на флейте и дarts.

Команды CLI Flutter

Создание нового проекта Flutter:

flutter create <project_name>

Запуск приложения Flutter:

flutter run

Сборка APK для релиза:

flutter build apk

Анализ кода Dart:

flutter analyze

Запуск тестов:

flutter test

Получение пакетов:

flutter pub get

Обновление Flutter:

flutter upgrade

Проверка установки Flutter:

flutter doctor

Конструкции языка Dart

Переменные и типы данных:

int age = 30;
double price = 9.99;
String name = 'John';
bool isActive = true;
var dynamicVar = 'Can be any type';
final constantVar = 'Cannot be reassigned';
const compiletimeConstant = 'Compile-time constant';

Безопасность null:

String? nullableString;
String nonNullableString = 'Hello';

Функции:

void simplePrint() {
  print('Hello');
}

int add(int a, int b) => a + b;

void namedParams({required String name, int? age}) {
  // Тело функции
}

void optionalParams(String name, [int? age]) {
  // Тело функции
}

Управление потоком:

if (condition) {
  // код
} else if (anotherCondition) {
  // код
} else {
  // код
}

for (var i = 0; i < 5; i++) {
  // код
}

while (condition) {
  // код
}

switch (variable) {
  case value1:
    // код
    break;
  default:
    // код
}

Списки и карты:

List<int> numbers = [1, 2, 3];
Map<String, int> ages = {'Alice': 30, 'Bob': 25};

Классы:

class Person {
  String name;
  int age;

  Person(this.name, this.age);

  void sayHello() {
    print('Hello, I am $name');
  }
}

Асинхронное программирование:

Future<void> fetchData() async {
  try {
    var result = await someAsyncOperation();
    print(result);
  } catch (e) {
    print('Error: $e');
  }
}

Потоки:

Stream<int> countStream(int max) async* {
  for (int i = 0; i < max; i++) {
    yield i;
  }
}

Обработка ошибок:

try {
  // Код, который может вызвать исключение
} on SpecificException {
  // Обработка конкретного исключения
} catch (e) {
  // Обработка любого исключения
} finally {
  // Всегда выполняется
}

Этот справочник охватывает наиболее важные команды Flutter и конструкции языка Dart, предоставляя быстрое руководство для разработчиков Flutter

Безопасность null в Flutter / Dart

Обработка безопасности null в Dart для приложений Flutter критически важна для написания надежного и безошибочного кода. Вот простое руководство по работе с безопасностью null:

Объявление переменных

Непустые переменные:

int age = 30;
String name = 'John';

Пустые переменные:

int? nullableAge;
String? nullableName;

Работа с типами, допускающими null

Операторы, связанные с null:

  1. Оператор доступа, зависящий от наличия значения (?.)
String? name;
print(name?.length); // Безопасный доступ к длине, если имя не равно null
  1. Оператор объединения (??)
String? name;
String displayName = name ?? 'Guest';
  1. Оператор присвоения, зависящий от наличия значения (??=)
String? name;
name ??= 'John'; // Присвоить 'John', если имя равно null

Оператор утверждения (!) Используйте этот оператор осторожно, так как он может привести к ошибкам во время выполнения, если значение равно null:

String? nullableName = 'John';
String nonNullableName = nullableName!;

Анализ потока

Анализ потока Dart помогает определить, когда переменная, допускающая null, безопасна для использования:

String? getName() => 'John';

void printName() {
  String? name = getName();
  if (name != null) {
    print(name.length); // Безопасно использовать имя здесь
  }
}

Позднее инициализация

Используйте late для непустых переменных, которые инициализируются после объявления:

late String lateInitializedName;
void initializeName() {
  lateInitializedName = 'John';
}

Обработка параметров, допускающих null

void greet(String name, {String? title}) {
  if (title != null) {
    print('Hello, $title $name');
  } else {
    print('Hello, $name');
  }
}

Работа с коллекциями

Списки, допускающие null:

List<String>? nullableList;
List<String?> listOfNullableStrings = ['Hello', null, 'World'];

Фильтрация значений null:

List<String?> mixedList = ['a', null, 'b', null, 'c'];
List<String> nonNullList = mixedList.whereType<String>().toList();

Следуя этим практикам, вы можете эффективно обрабатывать безопасность null в своих приложениях Dart и Flutter, сокращая риск ошибок, связанных с null, и улучшая общее качество кода.

Полезные ссылки