Google har udgivet Dart 2.12, en ny version af det sprog, der bruges til at bygge apps i Flutter. Udgivelsen kommer sammen med Flutter 2.0.
Med udgivelse af Flutter 2.0, Google bringer også Dart 2.12 til stabil. Hvis du ikke vidste det, er Dart det sprog, som Flutter bruger. Det er et TypeScript-baseret sprog, men kommer med nogle tilføjelser til sprogfunktioner, inklusive dem, jeg er ved at gennemgå.
Nul sikkerhed
Null safety er en ret fantastisk sprogfunktion. Det tvinger dig til at overveje, om en variabel nogensinde vil være nul, og eksplicit håndtere potentielle nul-situationer, samtidig med at du garanterer, at specifikke variabler aldrig vil være nul.
I Dart 2.12 er der nu fuld understøttelse af null-safety med en syntaks svarende til Swift og Kotlin. Der er endda smart-casting, hvor hvis Dart ved med sikkerhed, at en variabel, der normalt kan nulstilles, ikke kan være nul, vil den implicit caste den til en form, der ikke kan nulstilles.
Da null-safety er en (meget) brydende ændring, er denne funktion opt-in. Hvis du opdaterer til Dart 2.12, vil din kompilering ikke gå i stykker, og du behøver ikke bruge timer på at tilføje nullability hints til alt. Du kan endda bruge null-safe afhængigheder, hvis dit projekt endnu ikke er null-safe.
Når du beslutter dig for at migrere, kan du bruge det indbyggede migreringsværktøj (dart migrere) og/eller migrationsvejledning at få alt sat op.
Selvom null-safety er inkluderet i Dart 2.12, vil null-safety ikke blive aktiveret ud af boksen, hvis du opretter et nyt Flutter-projekt. Du skal aktivere det manuelt. Nye Dart-projekter vil have null-safety aktiveret.
Grænseflade for fremmed funktion
Selvom Dart (og Flutters) fokus er på fuld kompatibilitet på tværs af platforme, er der stadig nogle ting, der bare skal gøres indbygget. For at gøre native operationer nemmere har Dart en udenlandsk funktionsgrænseflade eller FFI. FFI lader dig interagere med C-kode fra Dart uden at skulle ty til mærkelige strengbaserede API-kald eller andre klodsede interoperabilitetsmetoder.
Og med Dart 2.12 er FFI nu stabil, hvilket betyder, at den er klar til at blive brugt i produktionsprojekter og for det meste er funktionsfuld.
Med det i tankerne er der nogle ændringer i FFI, herunder et par brydende.
Det meste af fokus med denne udgivelse var på, hvordan strukturer kan bruges med Dart og C. For det første kan du nu sende strukturer i din C-kode efter reference og værdi, hvor tidligere kun referencer blev understøttet. En anden vigtig funktion er understøttelse af indlejrede strukturer, som ikke var til stede før denne udgivelse.
Nu til de bryde ændringer. Hvis du brugte FFI, skal du muligvis opdatere din kode for at fungere med 2.12. Med denne version af FFI kan du ikke længere oprette tomme strukturer. Hvis du har brug for en af en eller anden grund, kan du bruge den nye "Uigennemsigtig" type. Der er også nogle ændringer i hvordan nogle af FFIs indbyggede funktioner fungerer, som du kan læs om her.
Endelig er der en ny pakke til FFI, der lader dig generere FFI-indpakninger fra eksisterende C-header-filer, kaldet ffigen. Hvis du har en masse C-kode, du skal bruge, med mange API-metoder, vil dette være ret nyttigt. Selvom mængden af C-kode du har er lille, er dette en fin bekvemmelighedsfunktion.
Og det er stort set det for Dart 2.12. Med tilføjelsen af nul-sikkerhed og et stabilt C-interoperabilitetsbibliotek bliver Dart til et meget funktionsrigt sprog. Fortæl os, hvad du synes om Dart 2.12 i kommentarerne!