Menu
Coddy logo textTech

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.

OperacjaSkładnia
Punkt wejściavoid main() { ... }
Wypisanie liniiprint("Hello, World!");
Interpolacja łańcuchówprint("Hi $name");
Wyrażenie w interpolacjiprint("Sum: ${a + b}");
Komentarz// this is a comment
Komentarz wieloliniowy/* ... */
Import bibliotekiimport 'dart:math';
Uruchomienie plikudart run main.dart

Zmienne i typy

Dart jest typowany statycznie, ale z var sam wnioskuje typy.

OperacjaSkładnia
Zmienna z wnioskowanym typemvar age = 30;
Jawny typint age = 30;
Stała czasu kompilacjiconst pi = 3.14;
Stała czasu wykonaniafinal name = getName();
Podstawowe typyint, double, String, bool
Typ dynamicznydynamic x = 5;
Konwersja typówint.parse("42"), n.toString()
Sprawdzenie typux is String, x as String

Null safety

Typy domyślnie nie dopuszczają null; dodaj ?, aby na to pozwolić.

OperacjaSkładnia
Bez null (domyślnie)int count = 0;
Typ dopuszczający nullString? name;
Bezpieczny dostępuser?.name
Wartość zastępczaname ?? "default"
Przypisanie, gdy nullname ??= "default";
Wymuszenie braku nullname!
Późna inicjalizacjalate 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.

OperacjaSkładnia
Długośćs.length
Wielkie / małe literys.toUpperCase(), s.toLowerCase()
Interpolacja"Total: $price"
Łączenie"foo" + "bar"
Zawieras.contains("ell")
Zaczyna się / kończy nas.startsWith("he")
Podział"a,b,c".split(",")
Zamianas.replaceAll("a", "b")
Podłańcuchs.substring(0, 3)
Usunięcie białych znakóws.trim()

Kolekcje (List, Map, Set)

Trzy podstawowe typy kolekcji ze składnią literałów.

OperacjaSkładnia
Literał listyvar nums = [1, 2, 3];
Dodanie do listynums.add(4);
Dostęp / długośćnums[0], nums.length
Map / wherenums.map((n) => n * 2), nums.where((n) => n > 1)
Literał mapyvar ages = {"Ada": 30};
Dostęp do mapyages["Ada"]
Literał zbioruvar ids = {1, 2, 3};
Operator rozwinięciavar 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.

OperacjaSkładnia
If / elseif (x > 0) { ... } else { ... }
Operator warunkowyvar r = x > 0 ? "pos" : "neg";
Switchswitch (n) { case 1: ...; default: ... }
Pętla forfor (var i = 0; i < 10; i++) { ... }
Pętla for-infor (var item in items) { ... }
forEachitems.forEach((x) => print(x));
Pętla whilewhile (x < 100) { ... }
Do-whiledo { ... } while (x < 100);
Break / continuebreak;, continue;

Funkcje

Funkcje są obiektami pierwszej klasy; składnia strzałkowa skraca pojedyncze wyrażenia.

OperacjaSkładnia
Definicja funkcjiint add(int a, int b) { return a + b; }
Funkcja strzałkowaint square(int x) => x * x;
Opcjonalne pozycyjnevoid log(String m, [int? code]) { ... }
Parametry nazwanevoid box({int w = 0, int h = 0}) { ... }
Wymagane nazwanevoid box({required int w}) { ... }
Funkcja anonimowavar f = (x) => x * 2;
Przekazanie jako argumentnums.map((n) => n * 2)
Typedeftypedef IntOp = int Function(int);

Klasy i konstruktory

Klasy przechowują stan i zachowanie; konstruktory mają kilka postaci.

OperacjaSkładnia
Definicja klasyclass Point { int x; int y; }
KonstruktorPoint(this.x, this.y);
Konstruktor nazwanyPoint.origin() : x = 0, y = 0;
Utworzenie instancjivar p = Point(1, 2);
Metodadouble dist() { ... }
Getterint get area => w * h;
Dziedziczenieclass Circle extends Shape { ... }
Wywołanie supersuper(args)
Klasa abstrakcyjnaabstract class Shape { ... }
Implementacja interfejsuclass Dog implements Animal { ... }

Asynchroniczność (Future / async-await)

Future to wartość dostępna później; await czeka, aż się rozwiąże.

OperacjaSkładnia
Funkcja asynchronicznaFuture<int> load() async { ... }
Oczekiwanie na Futurevar data = await load();
Zwrócenie wartościreturn 42; wewnątrz funkcji async
Opóźnienieawait Future.delayed(Duration(seconds: 1));
Obsługa błędówtry { await load(); } catch (e) { ... }
Łańcuch thenload().then((v) => print(v));
Uruchomienie równoległeawait Future.wait([a(), b()]);
Strumień asynchronicznyawait 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?
Tak. Ta ściąga z Darta jest całkowicie darmowa i nie wymaga rejestracji. Dodaj ją do zakładek i wracaj, gdy potrzebujesz sprawdzić operator null safety, metodę kolekcji albo wzorzec asynchroniczny.
Jak działa null safety w Darcie?
W Darcie każdy typ domyślnie nie dopuszcza null: 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.
Czy mogę ćwiczyć Darta online?
Tak. Otwórz edytor online Dart, aby uruchomić dowolny fragment z tej ściągi w przeglądarce, bez instalowania SDK. Gdy chcesz uczyć się bardziej systematycznie, darmowy interaktywny kurs Darta w Coddy prowadzi krok po kroku od null safety i kolekcji do klas i async/await.
Czy ta ściąga nadaje się dla początkujących?
Tak. Jest ułożona od najczęstszych tematów (zmienne, null safety, sterowanie przepływem) do bardziej zaawansowanych (klasy, Future, async/await), więc górnych sekcji możesz używać od pierwszego dnia, a resztę poznawać z czasem.
Ilustracja języków programowania w Coddy

Naucz się języka Dart z Coddy

ZACZNIJ