Został wydany Dart 2.12 z funkcją null-safety i interoperacyjnością z językiem C

Google wypuściło Dart 2.12, nową wersję języka używanego do tworzenia aplikacji we Flutterze. Wydanie jest dostarczane wraz z Flutter 2.0.

Z wydanie Fluttera 2.0Google wprowadza także wersję stabilną Darta 2.12. Jeśli nie wiesz, Dart to język, którego używa Flutter. Jest to język oparty na TypeScript, ale zawiera kilka dodatków, w tym te, które zaraz omówię.

Zerowe bezpieczeństwo

Bezpieczeństwo zerowe to całkiem świetna funkcja językowa. Zmusza Cię do rozważenia, czy zmienna kiedykolwiek będzie miała wartość zerową, i jawnego poradzenia sobie z potencjalnymi sytuacjami zerowymi, jednocześnie pozwalając Ci zagwarantować, że określone zmienne nigdy nie będą miały wartości zerowej.

W Dart 2.12 dostępna jest teraz pełna obsługa bezpieczeństwa zerowego, ze składnią podobną do Swifta i Kotlina. Istnieje nawet inteligentne rzutowanie, w ramach którego jeśli Dart wie na pewno, że zmienna normalnie dopuszczająca wartość null nie może mieć wartości null, domyślnie rzuci ją do postaci nie dopuszczającej wartości null.

Ponieważ zerowe bezpieczeństwo jest (bardzo) przełomową zmianą, ta funkcja jest opcjonalna. Jeśli zaktualizujesz Dart 2.12, Twoja kompilacja nie ulegnie uszkodzeniu i nie będziesz musiał spędzać godzin na dodawaniu do wszystkiego wskazówek dotyczących zerowania. Możesz nawet użyć zależności bezpiecznych dla wartości null, jeśli Twój projekt nie jest jeszcze bezpieczny dla wartości null.

Gdy już zdecydujesz się na migrację, możesz skorzystać z wbudowanego narzędzia do migracji (daruj migrację) i/lub przewodnik po migracji aby wszystko było skonfigurowane.

Ponadto, chociaż funkcja null-safety jest zawarta w Dart 2.12, jeśli utworzysz nowy projekt Flutter, funkcja null-safety nie zostanie włączona od razu po wyjęciu z pudełka. Musisz włączyć tę funkcję ręcznie. Nowe projekty Dart będą miały włączone bezpieczeństwo zerowe.

Interfejs funkcji obcych

Mimo że Dart (i Flutter) skupiają się na pełnej kompatybilności między platformami, nadal są pewne rzeczy, które należy zrobić natywnie. Aby ułatwić natywne operacje, Dart ma interfejs funkcji obcych, w skrócie FFI. FFI umożliwia interakcję z kodem C Dart bez konieczności uciekania się do dziwnych wywołań API opartych na ciągach znaków lub innych nieporadnych metod interoperacyjności.

W wersji Dart 2.12 FFI jest teraz stabilne, co oznacza, że ​​jest gotowe do użycia w projektach produkcyjnych i ma w większości kompletne funkcje.

Mając to na uwadze, w FFI wprowadzono pewne zmiany, w tym kilka przełomowych.

W tym wydaniu większość uwagi skupiono na tym, jak można używać struktur w Dart i C. Po pierwsze, możesz teraz przekazywać struktury w kodzie C poprzez referencje i wartości, gdzie wcześniej obsługiwane były tylko referencje. Kolejną ważną funkcją jest obsługa zagnieżdżonych struktur, która nie była dostępna przed tą wersją.

A teraz najważniejsze zmiany. Jeśli korzystałeś z FFI, może być konieczna aktualizacja kodu, aby działał z wersją 2.12. W tej wersji FFI nie można już tworzyć pustych struktur. Jeśli z jakiegoś powodu go potrzebujesz, możesz użyć nowego typu „Nieprzezroczystego”. Wprowadzono także pewne zmiany w działaniu niektórych wbudowanych funkcji FFI, co jest możliwe poczytaj o tym tutaj.

Na koniec dostępny jest nowy pakiet dla FFI, który umożliwia generowanie opakowań FFI z istniejących plików nagłówkowych C, o nazwie figen. Jeśli masz dużo kodu C, którego musisz użyć, z wieloma metodami API, będzie to bardzo pomocne. Nawet jeśli ilość kodu C jest niewielka, jest to przydatna i wygodna funkcja.


I to właściwie tyle, jeśli chodzi o Dart 2.12. Dzięki dodaniu funkcji null-safe i stabilnej biblioteki interoperacyjności w języku C, Dart staje się językiem bardzo bogatym w funkcje. Daj nam znać, co myślisz o Dart 2.12 w komentarzach!