Google пусна Dart 2.12, нова версия на езика, използван за създаване на приложения във Flutter. Изданието идва заедно с Flutter 2.0.
С издание на Flutter 2.0, Google също превежда Dart 2.12 в стабилна версия. В случай, че не знаете, Dart е езикът, който използва Flutter. Това е език, базиран на TypeScript, но идва с някои добавки към езикови функции, включително тези, които ще разгледам.
Нулева безопасност
Нулевата безопасност е доста страхотна езикова функция. Принуждава ви да обмислите дали дадена променлива някога ще бъде нулева и изрично да се справите с потенциални нулеви ситуации, като същевременно ви позволява да гарантирате, че конкретни променливи никога няма да бъдат нулеви.
В Dart 2.12 вече има пълна поддръжка за null-safety със синтаксис, подобен на Swift и Kotlin. Има дори интелигентно предаване, при което ако Dart знае със сигурност, че нормално нулева променлива не може да бъде нула, той имплицитно ще я прехвърли към ненулева форма.
Тъй като null-safety е (много) критична промяна, тази функция е включена. Ако актуализирате до Dart 2.12, вашата компилация няма да се повреди и няма да ви се налага да прекарвате часове в добавяне на съвети за нищожност към всичко. Можете дори да използвате null-safe зависимости, ако вашият проект все още не е null-safe.
След като решите да мигрирате, можете да използвате вградения инструмент за мигриране (стрела мигрират) и/или ръководство за миграция за да настроите всичко.
Освен това, докато нулевата безопасност е включена в Dart 2.12, ако създадете нов проект на Flutter, нулевата безопасност няма да бъде активирана веднага. Ще трябва да го активирате ръчно. Новите Dart проекти ще имат активирана нулева защита.
Чужди функционален интерфейс
Въпреки че фокусът на Dart (и Flutter) е върху пълна съвместимост между платформи, все още има някои неща, които просто трябва да се направят нативно. За да улесни собствените операции, Dart има чужд функционален интерфейс или FFI. FFI ви позволява да взаимодействате с C код от Dart, без да се налага да прибягвате до странни API извиквания, базирани на низове, или други тромави методи за оперативна съвместимост.
И с Dart 2.12, FFI вече е стабилен, което означава, че е готов за използване в производствени проекти и е предимно пълен с функции.
Имайки предвид това, има някои промени във FFI, включително няколко чупливи.
По-голямата част от фокуса в тази версия беше върху това как структурите могат да се използват с Dart и C. От една страна, вече можете да предавате структури във вашия C код чрез препратка и стойност, където преди се поддържаха само препратки. Друга важна характеристика е поддръжката на вложени структури, която не присъстваше преди тази версия.
Сега за важните промени. Ако сте използвали FFI, може да се наложи да актуализирате кода си, за да работи с 2.12. С тази версия на FFI вече не можете да създавате празни структури. Ако имате нужда от такъв по някаква причина, можете да използвате новия тип "Opaque". Има и някои промени в начина на работа на някои от вградените функции на FFI, които можете прочетете тук.
И накрая, има нов пакет за FFI, който ви позволява да генерирате FFI обвивки от съществуващи C заглавни файлове, наречен фиген. Ако имате много C код, който трябва да използвате, с много API методи, това ще бъде доста полезно. Дори ако количеството C код, което имате, е малко, това е хубава удобна функция.
И това е почти всичко за Dart 2.12. С добавянето на null-safety и стабилна C библиотека за оперативна съвместимост, Dart се превръща в много богат на функции език. Кажете ни какво мислите за Dart 2.12 в коментарите!