Programmering

Hurtig UI-udvikling med Flutter til Windows

Der er meget at sige om værktøjer, der gør det let at målrette mod flere platforme fra en enkelt codebase, hvilket reducerer belastningen på udviklere og øger rækkevidden for dine applikationer. Microsofts Xamarin er et glimrende eksempel på dette, der udvider .NET til iOS og Android. Men hvad med den anden retning, hvor et etableret mobiludviklingsværktøj tilføjer Windows som en ny platform?

Det sker ikke ofte, men overraskende tilføjer Googles Flutter-mobiludviklingsmiljø et nyt build-mål i Windows sammen med dets eksisterende support til Android, iOS, macOS, Linux og internettet. Med de nyeste udviklingsudgivelser kan du nu opbygge Flutter-apps til Win32 ved hjælp af de samme kontroller og designværktøjer til at levere desktop-kode på samme tid som du bygger mobile apps.

At målrette mod Windows giver mening for Google, da udgivelsen blogindlæg bemærker, at mere end halvdelen af ​​Flutter-udviklere bruger Windows-udviklingsværktøjer. Flutter's UI-værktøj er naturlig kode, og da det fungerer med standard Windows API-opkald, kan du bruge det med ny eller eksisterende kode.

Brug af Flutter på Windows

Flutter er bygget op omkring den nyeste version af Googles Dart-sprog. Det er et C-lignende sprog med en struktur, der minder om både JavaScript og C #. Hvis du kommer til det fra en .NET-baggrund, er der ikke for meget nyt at lære; sprogkonstruktionerne vil være velkendte. En lav adgangsbarriere er en god ting, da du skal være klar til at begynde at kode meget hurtigt.

Flutter's Windows-support er eksperimentel, så du skal foretage nogle ændringer i en standardinstallation fra kommandolinjen. Skift først til dev-kanalen, og opgrader derefter for at sikre, at du kører den nyeste dev-kanalbygning. Endelig skal du bruge kommandolinjens Flutter-værktøjer til at aktivere Windows-skrivebordssupport. Når det er gjort, skal du genstarte alle åbne redaktører. Du kan kontrollere, at Windows-support er aktiveret ved at kontrollere for tilsluttede enheder; Windows vises her. Det er en god ide at køre Flutter-lægeværktøjet for at kontrollere, at alle de relevante afhængigheder er installeret, da dette vil installere eventuelle manglende funktioner efter behov.

I modsætning til de mobile enhedsversioner af Flutter har desktopversionen brug for Visual Studio 2019 med sine C ++ desktop-udviklingsværktøjer. Du kan stadig arbejde i Visual Studio-kode, hvis du har nogen eksisterende mobile Flutter-apps, som du vil bringe til skrivebordet, men desktop Flutter skal bruge Windows C ++ - kompilatoren til at oprette Windows-apps med alle de nødvendige understøttende biblioteker.

Skrivning af Flutter-applikationer på Windows

Selvom du har brug for Visual Studios C ++ -værktøjer, redigerer og bygger du stadig meget af dine Flutter-desktopapplikationer i Visual Studio-kode med Flutter-plug-in'en og skifter til Visual Studio, når du skal redigere C ++ eller bruge Windows SDK'er. Oprettelse af et nyt projekt genererer automatisk det stillads, der er nødvendigt for at opbygge en Windows-desktopapplikation sammen med standardversionerne af Android og iOS. Du kan derefter redigere din applikationskode i den almindelige main.dart-fil, som bliver samlet i de relevante versioner ved byggetidspunktet.

Almindelig Dart-kode forbliver i lib-mappen. Windows-mappen er det sted, hvor du skriver din platformsspecifikke kode og holder den adskilt fra alle platformsfunktioner. Denne tilgang giver dig mulighed for at bygge videre på dine eksisterende investeringer i Windows-kode og API'er ved hjælp af Flutter's Platform Channels til at levere interoperabilitet mellem Windows C ++ -kode og Flutter's Dart.

Visual Studio Code Flutter og Dart-værktøjerne har stadig brug for at installere Android Studio, da de er nødvendige for at opbygge Android-versioner af dine applikationer. Hvis du arbejder på en platform på tværs af platforme, er det bedst at skrive en hvilken som helst Android-kode i Android Studio og gemme Kotlin-koden i din Flutter-apps Android-kodetræ. At dele en kodestruktur på denne måde giver mening; mens du har mulighed for at bruge Visual Studio Code til at redigere Windows C ++ - kode, har den fulde Visual Studio IDE mange flere overkommelige priser og bedre biblioteksupport, hvilket gør det til et foretrukket udviklingsmiljø for kode, der skal bruge Win32 SDK og biblioteker.

Brug af Windows SDK'er, API'er og biblioteker med Flutter

Flutter er designet til at arbejde på tværs af udviklingsstakke og tilbyder to forskellige ruter til at arbejde med Windows-native API'er. Den første, platformskanaler, giver en måde at videresende meddelelser fra en Flutter UI til en native API ved hjælp af et platform plug-in som en indpakning til API'en. Selvom dette er den godkendte metode til at arbejde på tværs af stabelgrænser, er den beskedbaseret og asynkron, så den er ikke egnet til alle Windows API'er.

Alternativt kan du bruge dets Foreign Function Interface til at linke direkte til et oprindeligt bibliotek og bruge dets API-opkald. Denne tilgang er sandsynligvis den bedste måde at levere Windows-funktionalitet til en Flutter-app, da du kan linke til eksisterende eller ny kode direkte med enten statiske eller dynamiske links. Indfødt kode skal have tilgængelige C-symboler, så din Flutter-kode kan linke til dem; enhver C ++ - kode skal eksportere dem i C-format via ekstern mulighed.

De fleste Windows SDK-biblioteker er allerede kompileret, så du skal bruge dynamisk sammenkædning for at bringe dem ind i dine Flutter-applikationer. Brug Flutter DynamicLibrary.open funktion for at tilføje dem til din applikation og derefter behandle dem meget som med et Flutter-plug-in. Faktisk arbejder Flutter-teamet allerede med et Win32-plug-in, der giver adgang til de fleste af Windows API'erne, klar til brug i din kode.

Et værktøj til hurtig, samarbejde UI-udvikling

En af fordelene ved Flutter's udviklingsværktøj er dens hot reload-mulighed. Du kan have en kopi af din kode kørende og knyttet til en fejlretning, foretage en ændring af koden og trykke på genindlæsningstasten i Visual Studio Code-terminalen for at genindlæse applikationen uden at ændre dens tilstand. Der er en mulighed for genstart, hvis du foretrækker at starte med en ny tilstand.

At være i stand til hurtigt at ændre brugergrænseflade eller forretningslogik uden at genstarte en app er en virkelig nyttig funktion for Flutter. Programmering bliver mere interaktiv, især hvis du arbejder ved siden af ​​en designer eller en slutbruger. Du kan spørge, hvad der fungerer, foretage ændringer hurtigt og få et øjeblikkeligt svar fra dine udviklingspartnere. Når du er klar til at offentliggøre og distribuere din kode, kører du en build for at generere en exe-fil med alle de relevante support-DLL'er, klar til emballering med dit valg af installationsprogram.

Du er heller ikke begrænset til Win32, da en UWP Flutter-shell i øjeblikket er under udvikling (og allerede er blevet brugt til Store-apps). Resultatet er et fleksibelt og kraftfuldt platform-UI-lag, der fungerer med indbygget kode på tværs af en række platforme, der skaleres til de større skærme på pc'er, fungerer med både moderne og ældre Windows SDK'er og skal være klar til at arbejde med Project Genforening, når den ruller ud.