Karta cheat (Dart) dla Fluttera

Opisano podstawowe konstrukcje języka Dart

Page content

Oto arkusz wskazówek dla Flutter (Dart) z najbardziej przydatnych poleceń i konstrukcji językowych:

developer grający na fletrze i dartsie Powyżej znajduje się obraz wygenerowany przez AI (model Flux 1 dev) przedstawiający programistę grającego na fletrze i dartsie.

Polecenia CLI dla Flutter

Utwórz nowy projekt Flutter:

flutter create <project_name>

Uruchom aplikację Flutter:

flutter run

Zbuduj wersję APK do wersji produkcyjnej:

flutter build apk

Analiza kodu Dart:

flutter analyze

Uruchom testy:

flutter test

Pobierz pakiety:

flutter pub get

Zaktualizuj Flutter:

flutter upgrade

Sprawdź instalację Flutter:

flutter doctor

Konstrukcje językowe Dart

Zmienne i typy danych:

int age = 30;
double price = 9.99;
String name = 'John';
bool isActive = true;
var dynamicVar = 'Może być dowolnego typu';
final constantVar = 'Nie może zostać ponownie przypisany';
const compiletimeConstant = 'Stała czasu kompilacji';

Bezpieczeństwo przed wartościami null:

String? nullableString;
String nonNullableString = 'Hello';

Funkcje:

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

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

void namedParams({required String name, int? age}) {
  // Treść funkcji
}

void optionalParams(String name, [int? age]) {
  // Treść funkcji
}

Struktura sterowania:

if (condition) {
  // kod
} else if (anotherCondition) {
  // kod
} else {
  // kod
}

for (var i = 0; i < 5; i++) {
  // kod
}

while (condition) {
  // kod
}

switch (variable) {
  case value1:
    // kod
    break;
  default:
    // kod
}

Listy i mapy:

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

Klasy:

class Person {
  String name;
  int age;

  Person(this.name, this.age);

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

Programowanie asynchroniczne:

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

Strumienie:

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

Obsługa błędów:

try {
  // Kod, który może rzucić wyjątkiem
} on SpecificException {
  // Obsługa konkretnego wyjątku
} catch (e) {
  // Obsługa dowolnego wyjątku
} finally {
  // Zawsze wykonywane
}

Ten arkusz zawiera najważniejsze polecenia Flutter i konstrukcje językowe Dart, zapewniając szybki odniesienie dla programistów Flutter.

Bezpieczeństwo przed wartościami null w Flutter / Dart

Obsługa bezpieczeństwa przed wartościami null w Dart dla aplikacji Flutter jest kluczowa do pisania solidnego i wolnego od błędów kodu. Oto prosty przewodnik, jak pracować z bezpieczeństwem przed wartościami null:

Deklarowanie zmiennych

Zmienne niemające wartości null:

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

Zmienne mające wartość null:

int? nullableAge;
String? nullableName;

Praca z typami mającymi wartość null

Operatorzy do pracy z wartościami null:

  1. Operator dostępu do wartości null (?.)
String? name;
print(name?.length); // Bezpieczne uzyskanie długości, jeśli nazwa nie jest null
  1. Operator łączący (??)
String? name;
String displayName = name ?? 'Gość';
  1. Operator przypisania do wartości null (??=)
String? name;
name ??= 'John'; // Przypisz 'John', jeśli nazwa jest null

Operator asercji null (!) Używaj tego operatora ostrożnie, ponieważ może prowadzić do błędów w czasie wykonywania:

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

Analiza przepływu

Analiza przepływu w Dart pomaga określić, kiedy zmienna mająca wartość null jest bezpieczna do użycia:

String? getName() => 'John';

void printName() {
  String? name = getName();
  if (name != null) {
    print(name.length); // Bezpieczne użycie nazwy tutaj
  }
}

Zmienne opóźnione

Użyj late dla zmiennych niemających wartości null, które są inicjalizowane po deklaracji:

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

Obsługa parametrów mających wartość null

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

Praca z kolekcjami

Listy mające wartość null:

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

Filtrowanie wartości null:

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

Przestrzegając tych praktyk, możesz skutecznie obsługiwać bezpieczeństwo przed wartościami null w swoich aplikacjach Dart i Flutter, zmniejszając ryzyko błędów związanych z wartością null i poprawiając ogólną jakość kodu.

Przydatne linki