Flutter

**Flutter** on avoimen lähdekoodin käyttöliittymäkehitystyökalu, jonka Google on kehittänyt. Sen avulla ohjelmistosuunnittelijat voivat rakentaa natiiveja sovelluksia useille eri alustoille yhdestä koodipohjasta Dart-ohjelmointikiellä.

Flock on Flutterista tehty forkki, jonka tarkoituksena on lisätä bugikorjauksia ja uusia ominaisuuksia. Flock on aloitettu johtuen Googlen prioriteettien muuttumisesta ja Flutterin kehityksen hidastumisesta.

## Historia
Flutterin ensimmäinen versio julkaistiin nimellä "Sky". Se esiteltiin Dart-päivämääräkonferenssissa vuonna 2015. Sky rajoittui alun perin vain Android-laitteille, mutta ideana oli luoda ohjelmisto, joka voisi tuottaa 120 kuvaa sekunnissa jatkuvasti.

Vuonna 2017 Google julkaisi Flutterin ensimmäisen betaversion. Tämä alkuperäinen versio tarjosi jo useita merkittäviä ominaisuuksia, kuten Hot Reload -ominaisuuden, joka mahdollisti välittömän koodimuutosten esikatselun ilman sovelluksen uudelleenkäynnistämistä.

Flutterin 1.0 versio julkistettiin vuoden 2018 lopussa, joka laajensi tukensa iOS:lle ja tarjosi kehittäjille vakaan alustan rakentaa korkealaatuisia sovelluksia molemmille suosituimmille mobiilialustoille.

Vuoden 2021 maaliskuussa Google julkaisi Flutter 2:n. Tämä merkittävä päivitys toi virallisen tuen verkkosovelluksille uuden Canvas Kit -renderöinnin ja verkkosovelluksille tarkoitettujen widgettien avulla, sekä aikaisen tuen työpöytäsovelluksille Windowsille, macOS:lle ja Linuxille sekä parannetut Add-to-App -API:t. Tämä julkaisu käytti myös Dart 2.0:aa, joka sisälsi äänilukotuksen (sound null-safety), aiheuttaen monia rikkinäisiä muutoksia ja ongelmia useissa ulkoisissa paketeissa. Flutter-tiimi kuitenkin tarjosi ohjeita ja työkaluja näiden ongelmien lieventämiseksi.

Syyskuun 8. päivänä 2021 Google julkaisi Dart 2.14:n ja Flutter 2.5:n. Päivitys toi parannuksia Androidin koko näytön tilaan ja Google'n uusimpaan Material Design -versioon, joka tunnetaan nimellä "Material You". Dart sai kaksi uutta päivitystä, joissa standardoitiin lint-ehdot ja merkittiin tuki Apple Siliconille vakaaksi.

Toukokuun 12. päivänä 2022 Google ilmoitti Flutter 3:n ja Dart 2.17:n julkaisusta. Tämä päivitys laajensi tuettujen alustojen kokonaismäärän kuuteen, mukaan lukien vakaa tuki Linuxille ja macOS:lle sekä Intel- että Apple Silicon -prosessoreilla.

Elokuun 30. päivänä 2022 julkaistiin Flutter 3.3. Tämä julkaisu sisälsi Objective-C:n ja Swiftin interop-tuen ja varhaisen esikatselun uudesta renderöintimoottorista nimeltä "Impeller", jonka tavoitteena on vähentää nykimistä, joka johtuu shader-kompilaatiosta.

Tammikuun 25. päivänä 2023 julkaistiin Flutter 3.7.

## Tekniikka

Flutterin rakenne perustuu neljään pääkomponenttiin: Dart-ohjelmointikieleen, Flutter-moottoriin, Foundation-kirjastoon ja Widget-kirjastoihin.

* Dart: Flutter käyttää Dartin ohjelmointikieltä, joka on Googlen kehittämä. Dart tukee sekä AOT (Ahead Of Time) -kompilointia, joka on tärkeä korkean suorituskyvyn saavuttamiseksi, että JIT (Just In Time) -kompilointia, joka mahdollistaa Hot Reload -ominaisuuden ja tukee kehittäjää sovelluksen kehittämisprosessissa.
* Flutter-moottori: Flutter-moottori on kirjoitettu pääasiassa C++:lla ja se tarjoaa alhaisen tason renderöinnin. Se tarjoaa pääsyn Skia-kirjaston palveluihin ja käyttää Dartia sekä perus- että käyttöliittymäkerroksen koodina.
* Foundation-kirjasto: Tämä Dartilla kirjoitettu kirjasto tarjoaa korkean tason abstraktioita, jotka käyttävät Flutter-moottoria. Se tarjoaa myös satoja luokkia, jotka sisältävät keskeiset, yleiskäyttöiset algoritmit ja apuohjelmat.
* Widgetit: Flutterin käyttöliittymä rakennetaan widgeteistä, jotka ovat käyttöliittymän peruselementtejä. Jokainen widget on itsenäinen ja voi sisältää muita widgettejä luoden hierarkisen rakenteen.

## Ominaisuudet
Flutterin keskeiset ominaisuudet sisältävät Hot Reload -ominaisuuden, widget-pohjaisen järjestelmän, yhden koodipohjan useille alustoille ja hyvän suorituskyvyn.

* Hot Reload: Tämä ominaisuus mahdollistaa muutosten tekemisen koodiin lennossa ja niiden välittömän esikatselun, mikä tekee sovelluksen debuggaamisesta ja iteroinnista huomattavasti nopeampaa.
* Widget-pohjainen: Flutterin käyttöliittymä on rakennettu widgeteistä. Ne ovat kuin rakennuspalikoita, jotka auttavat luomaan räätälöityjä ja monimutkaisia käyttöliittymiä.
* Yksi koodipohja: Flutter mahdollistaa sovelluksen kehittämisen Androidille, iOS:lle, Webille, Windowsille, Linuxille ja MacOS:lle samalla koodipohjalla. Tämä vähentää kehityksen aikaa ja yksinkertaistaa ylläpitoa.
* Suorituskyky: Koska Flutter kompiloi Dart-koodin natiiviksi koodiksi, se pystyy tarjoamaan erinomaisen suorituskyvyn.

## Esimerkkejä sovelluksista

Useat tunnetut yritykset ovat jo hyödyntäneet Flutteria sovellustensa kehittämisessä. Esimerkkeinä ovat:

*Alibaba: Maailman suurimpiin kuuluva verkkokauppa Alibaba on käyttänyt Flutteria mobiilisovelluksensa kehittämisessä.

*Google Pay: myös Googlen omat sovellukset, kuten Google Pay, on rakennettu Flutterin avulla.

*Reflectly: Reflectly, suosittu mindfulness- ja päiväkirjasovellus, rakennettiin alun perin natiivilla koodilla, mutta yritys päätti siirtyä Flutteriin sen joustavuuden ja suorituskyvyn vuoksi.

## Lähteet