Flutter on Googlen kehittämä, Dart-ohjelmointikieleen räätälöity ratkaisu monialustaisten sovellusten tekoon.
Se aloitti toimintansa Android- ja iOS sovellusten yhteisenä alustana Facebookin React Nativen tyyliin, mutta ajan edetessä laajeni tukemaan myös PC-käyttöjärjestelmiä (Windows, MacOS, Linux).
Developereille tehty dokumentaatio on erittäin kattava sekä valmiiden Flutter-toteutusten että Dart-ohjelmointikielen pohjalta. Muista toteutuksista poikkeava ohjelmointikieli luo oman kynnyksensä, mutta dokumentaatio on kilpailijoita parempi.
Flutter on kaikkea mitä React Native tarjoaa “and then some”. Laajennettu tuki myös x86 käyttöjärjestelmiin tuo sen edun, että ohjelmistotoimisto voi potentiaalisesti tuottaa erillisen Electron.js version sijaan samasta lähdekoodista myös ohjelman työpöytäversion. Tässäkin tapauksessa Flutter sovellus on siis nativi sisäänrakennetulla dart-tulkilla (.NET, GTK, MacOS), tosin kuin Electron.js, josta tuotetaan saumaton verkkoselainikkuna JavaScript-tulkilla.
Flutterissa on työn alla myös tuki Apple Silicon M1 -prosessorille, joka löytyy uusimmista Mac-tietokoneista. Koska kaikki alustat luodaan samasta Dart-lähdekoodista, muuntuu olemassaoleva sovellus myös näille Applen laitteille yhteensopivaksi tulevaisuudessa.
Muita eroja listattuna:
Googlen palvelin- ja ohjelmistoratkaisut tarjoavat täysiverisen ratkaisun Firebasen myötä. Firebase on valmis tietokanta- ja rajapintaratkaisu datan säilyttämiseen, muokkaamiseen ja sen pääsyn autentikointiin. Tämä on kattavasti integroitu Flutterin kanssa.
Material Design kirjasto Flutterille ja Angularille tarjoavat pitkälle mietityt, valmiit ja simplistiset pelisäännöt käyttöliittymän tekoon. Lisäksi siinä tulee kattava lista kuvakkeita.
Javascriptiin tai Javaan / Kotliniin / Swiftiin tottuneet näkevät kaikki jotain tuttua Dartissa. Se tukee javascriptin lupauksia (Promise) Future -muodossa ja asynkronisia funktioita, jotka palauttavat Futuren. Kaikki data pitää joko tyypittää spesifisesti tai tyypittää olemaan “dynamic”, joka vastaa TypeScriptin “any” -tyyppiä. Javassa käytetään tai laajennetaan olemassaolevia oliotyyppejä, sama Dartissa. Myös fetchille on vastaava: flutterin HTTP-kirjasto: https://pub.dev/packages/http. Eli dataa haetaan erittäin samaan tyyliin kuin JavaScriptissä lupauksina, joista saadaan listoja ja/tai objekteja.
Tietoa voi Redux/Zustand storen kaltaisesti liikuttaa ja tallentaa tekemällä tiedon säilytykselle luokan, joka haetaan tarvittavaan paikkaan sisäänrakennetulla Provider.of funktiolla:
Funktio, joka “fetchaa” paikalliselta palvelimelta jotain tietoa käyttäen Flutterin HTTP:
Future<http.Response> getPosts() async {
return await http.get('localhost',
headers: <String, String>{
'Content-Type':'application/json;'+
'charset=utf-8',
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate, br',
'Connection': 'keep-alive'
},
body: jsonEncode(<String, String>{
'scope': 'public',
}),
);
}
...
http.Response res = await getPosts();
final responseJson = json.decode(res.body);
Agenda on erittäin valmis tuottamaan Flutter-sovelluksia firmoille, joilla on tarve toistaa esimerkiksi firman dataa mobiilisovelluksessa modernina toteutuksena. Se tuo allekirjoittaneelle developerille mukavaa vaihtelua WordPress-verkkosivujen luonnista 🙂