Dart Cheat Sheet: ściąga z Darta
Ostatnia aktualizacja
Hello World i struktura programu
Każdy program w Darcie zaczyna się od funkcji main najwyższego poziomu.
| Operacja | Składnia |
|---|---|
| Punkt wejścia | void main() { ... } |
| Wypisanie linii | print("Hello, World!"); |
| Interpolacja łańcuchów | print("Hi $name"); |
| Wyrażenie w interpolacji | print("Sum: ${a + b}"); |
| Komentarz | // this is a comment |
| Komentarz wieloliniowy | /* ... */ |
| Import biblioteki | import 'dart:math'; |
| Uruchomienie pliku | dart run main.dart |
Zmienne i typy
Dart jest typowany statycznie, ale z var sam wnioskuje typy.
| Operacja | Składnia |
|---|---|
| Zmienna z wnioskowanym typem | var age = 30; |
| Jawny typ | int age = 30; |
| Stała czasu kompilacji | const pi = 3.14; |
| Stała czasu wykonania | final name = getName(); |
| Podstawowe typy | int, double, String, bool |
| Typ dynamiczny | dynamic x = 5; |
| Konwersja typów | int.parse("42"), n.toString() |
| Sprawdzenie typu | x is String, x as String |
Null safety
Typy domyślnie nie dopuszczają null; dodaj ?, aby na to pozwolić.
| Operacja | Składnia |
|---|---|
| Bez null (domyślnie) | int count = 0; |
| Typ dopuszczający null | String? name; |
| Bezpieczny dostęp | user?.name |
| Wartość zastępcza | name ?? "default" |
| Przypisanie, gdy null | name ??= "default"; |
| Wymuszenie braku null | name! |
| Późna inicjalizacja | late String value; |
| Rozwinięcie odporne na null | [...?maybeList] |
Łańcuchy znaków
Łańcuchy można zapisywać w cudzysłowach pojedynczych, podwójnych i potrójnych.
| Operacja | Składnia |
|---|---|
| Długość | s.length |
| Wielkie / małe litery | s.toUpperCase(), s.toLowerCase() |
| Interpolacja | "Total: $price" |
| Łączenie | "foo" + "bar" |
| Zawiera | s.contains("ell") |
| Zaczyna się / kończy na | s.startsWith("he") |
| Podział | "a,b,c".split(",") |
| Zamiana | s.replaceAll("a", "b") |
| Podłańcuch | s.substring(0, 3) |
| Usunięcie białych znaków | s.trim() |
Kolekcje (List, Map, Set)
Trzy podstawowe typy kolekcji ze składnią literałów.
| Operacja | Składnia |
|---|---|
| Literał listy | var nums = [1, 2, 3]; |
| Dodanie do listy | nums.add(4); |
| Dostęp / długość | nums[0], nums.length |
| Map / where | nums.map((n) => n * 2), nums.where((n) => n > 1) |
| Literał mapy | var ages = {"Ada": 30}; |
| Dostęp do mapy | ages["Ada"] |
| Literał zbioru | var ids = {1, 2, 3}; |
| Operator rozwinięcia | var all = [...a, ...b]; |
| If / for w kolekcji | [if (show) 1, for (n in xs) n] |
Sterowanie przepływem
Warunki piszemy w nawiasach; switch obsługuje wzorce.
| Operacja | Składnia |
|---|---|
| If / else | if (x > 0) { ... } else { ... } |
| Operator warunkowy | var r = x > 0 ? "pos" : "neg"; |
| Switch | switch (n) { case 1: ...; default: ... } |
| Pętla for | for (var i = 0; i < 10; i++) { ... } |
| Pętla for-in | for (var item in items) { ... } |
| forEach | items.forEach((x) => print(x)); |
| Pętla while | while (x < 100) { ... } |
| Do-while | do { ... } while (x < 100); |
| Break / continue | break;, continue; |
Funkcje
Funkcje są obiektami pierwszej klasy; składnia strzałkowa skraca pojedyncze wyrażenia.
| Operacja | Składnia |
|---|---|
| Definicja funkcji | int add(int a, int b) { return a + b; } |
| Funkcja strzałkowa | int square(int x) => x * x; |
| Opcjonalne pozycyjne | void log(String m, [int? code]) { ... } |
| Parametry nazwane | void box({int w = 0, int h = 0}) { ... } |
| Wymagane nazwane | void box({required int w}) { ... } |
| Funkcja anonimowa | var f = (x) => x * 2; |
| Przekazanie jako argument | nums.map((n) => n * 2) |
| Typedef | typedef IntOp = int Function(int); |
Klasy i konstruktory
Klasy przechowują stan i zachowanie; konstruktory mają kilka postaci.
| Operacja | Składnia |
|---|---|
| Definicja klasy | class Point { int x; int y; } |
| Konstruktor | Point(this.x, this.y); |
| Konstruktor nazwany | Point.origin() : x = 0, y = 0; |
| Utworzenie instancji | var p = Point(1, 2); |
| Metoda | double dist() { ... } |
| Getter | int get area => w * h; |
| Dziedziczenie | class Circle extends Shape { ... } |
| Wywołanie super | super(args) |
| Klasa abstrakcyjna | abstract class Shape { ... } |
| Implementacja interfejsu | class Dog implements Animal { ... } |
Asynchroniczność (Future / async-await)
Future to wartość dostępna później; await czeka, aż się rozwiąże.
| Operacja | Składnia |
|---|---|
| Funkcja asynchroniczna | Future<int> load() async { ... } |
| Oczekiwanie na Future | var data = await load(); |
| Zwrócenie wartości | return 42; wewnątrz funkcji async |
| Opóźnienie | await Future.delayed(Duration(seconds: 1)); |
| Obsługa błędów | try { await load(); } catch (e) { ... } |
| Łańcuch then | load().then((v) => print(v)); |
| Uruchomienie równoległe | await Future.wait([a(), b()]); |
| Strumień asynchroniczny | await for (var x in stream) { ... } |
Najczęściej używana składnia Darta na jednej stronie. Ten Dart cheat sheet to szybka ściąga z podstaw języka: zmienne i typy, null safety, łańcuchy, kolekcje, sterowanie przepływem, funkcje, klasy oraz Future i async/await, których używasz do pisania aplikacji we Flutterze.
Wszystko tutaj to standardowy Dart działający na oficjalnym SDK. Skopiuj to, czego potrzebujesz, albo uruchom każdy fragment w edytorze online Dart, bez instalacji.
Dart cheat sheet: najczęstsze pytania
Czy ten Dart cheat sheet jest darmowy?
Jak działa null safety w Darcie?
int count nigdy nie może zawierać null. Aby pozwolić na null, dodajesz ? (String? name), a kompilator zmusza cię wtedy do obsłużenia przypadku null. Pomocnicze operatory skracają zapis: ?. do bezpiecznego dostępu, ?? do wartości zastępczej i ! do wymuszenia, że wartość nie jest null, gdy masz pewność. Dzięki temu błędy null wychodzą już podczas kompilacji, a nie w czasie działania programu.Czym jest Future i jak działają async i await?
Future reprezentuje wartość, która będzie dostępna później, np. wynik zapytania sieciowego. Oznaczenie funkcji jako async pozwala używać await, które wstrzymuje wykonanie do zakończenia Future i zwraca wartość, więc kod asynchroniczny czyta się od góry do dołu jak synchroniczny. Otocz wywołania await blokiem try/catch, aby obsłużyć błędy.