Flutter

Allikas: Vikipeedia

Flutter on Google loodud avatud lähtekoodiga kasutajaliidese tarkvaraarenduskomplekt.

Flutter on kirjutatud C, C++ ja Darti keeltes ning kasutab Darti programmeerimiskeelt.

Ajalugu[muuda | muuda lähteteksti]

Flutterit tutvustati nimega Sky 2015. aastal Dart Developer Summitil, kus avalikustati, et Flutter baseerub Darti programmeerimiskeelel ning oli mõeldud ainult Androidi operatsioonisüsteemile. Lisaks väideti, et Flutter suudab renderdada püsivalt kaadrisagedusega 120.[1] Esimene versioon, Flutter 1.0 tuli välja 4. detsembril 2018. aastal ning see versioon sisaldas juba ka tuge iOS-ile.[2]

11. detsembril 2019 tulid välja Dart 2.7 ja Flutter 1.12, mis lisasid macOS-i ja veebi beetatoed ning olemasolevate rakenduste Flutterile üleviimise võimaluse.[3]

8. mail 2020 uuendati Dart 2.8-le ja Flutter 1.17-le, mis lisas toese Metal API-le parandades iOS-i jõudlust märgatavalt.[4]

8. juulil 2020 ilmus Google'i ja Canonicali koostöös Flutteri tugi Linuxile.[5]

5. oktoobril 2020 uuendati Flutter 1.22-le, mis lisas iOS 14 ja Android 11 toed.[6]

3. märtsil 2021 tuli Google välja suurima uuendusega – saabus Flutter 2.0. Nüüd sai Flutteri laiendust kasutada ka populaarsemates integreeritud programmeerimiskeskkondades nagu IntelliJ, Android Studio ja Visual Studio Code.[7]

8. septembril 2021 uuendati Flutter 2.5 peale. Uuendus parandas Androidi täisekraani režiimis kasutamist ning keskendus enamjaolt jõudluse parandamisele.[8]

12. mail 2022 tuli välja teine suurem uuendus, millega saabus Flutter 3. See uuendus kasvatas toetavate platvormide arvu kuuele, lisades stabiilse toe Linuxile ja MacOS-ile nii Inteli kui ka Apple Siliconi protsessoritel.[9]

30. augustil 2022 uuendati Flutter 3.3 peale. Uuendusega kaasnes uus graafikamootor Impeller, mis võimendas Flutter renderdamist märgatavalt.[10]

Arhitektuur[muuda | muuda lähteteksti]

Flutter on laiendatav kihtidega süsteem, kus iga eraldi olev teek sõltub eelnevast kihist ning iga raamistiku tase on valikuline ja välja vahetatav.[11]

Flutteri arhitektuuri suured osad on järgmised:

  • Flutteri mootor
  • Flutteri teek
  • Darti platvorm
  • Widgets
  • Flutteri arendusinstrumendid

Flutteri mootor[muuda | muuda lähteteksti]

Flutteri tuumas asub tema mootor, mis sisaldab kõiki vajalikke primitiive Flutteri rakenduste toetamiseks.[11]

See on enamjaolt kirjutatud C++ keeles ning pakub madalatasemelist Flutteri tuuma API rakendamist, mille hulgas on ka graafika, tekstipaigutus, faili ning võrgu sisend-väljund ja palju muud.[11]

Flutteri teek[muuda | muuda lähteteksti]

Flutteri teek on kirjutatud Darti keeles ning olemas on põhilised klassid ja funktsioonid, mida kasutatakse rakendustes mootoriga suhtlemiseks.[12]

Dart[muuda | muuda lähteteksti]

Dart on programmeerimiskeel, mis loodi 2011. aastal Google'i poolt. Dart sarnaneb oma süntaksilt C# ja Javaga, mistõttu on seda arendajatel lihtne õppida ning kasutusele võtta. Flutteri valis Darti oma programmeerimiskeeleks, kuna taheti kasutada keelt, mis oleks sarnane juba populaarsete keeltega nagu JavaScript, Java ja C# ning Dart oli selleks parim variant.[13] Dart kasutab lisaks just-in-time kompileerimisele ka ahead-of-time kompileerimist, mis muudab Flutteri kiireks ja täielikult kohandatavaks.[14]

Darti keele koodijupp, mis väljastab sõne "hello" 5 korda, näeb välja järgmine:

void main() {  
  for (int i = 0; i < 5; i++) {  
    print('hello ${i + 1}');  
  }  
}

Widget[muuda | muuda lähteteksti]

Kõige tähtsamat komponenti Flutteri rakenduses kutsutakse widgetiks. Widgetid on loodud kasutades raamistiku, mis sai oma inspiratsiooni Reactilt.[15]

Üks widget võib koosneda mitmest teisest widgetist, mis kõik kokku moodustavad hierarhilise struktuuri.[15] Iga kasutajaliidese element Flutteris on widget ning ta saab olla kas staatiline (ingl stateless) või dünaamiline (ingl stateful). Staatilised widgetid uuenevad ainult siis, kui nende sisend muutub, dünaamilised widgetid jälgivad muutuseid ning uuendavad ennast vastavalt.[16] Staatilised widgetid on näiteks tekst ja ikoon.[16] Dünaamilised widgetid on näiteks slaider ja vorm.[16]

Näide widgetitest Flutteris:

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('My Home Page'),
        ),
        body: Center(
          child: Builder(
            builder: (context) {
              return Column(
                children: [
                  const Text('Hello World'),
                  const SizedBox(height: 20),
                  ElevatedButton(
                    onPressed: () {
                      print('Click!');
                    },
                    child: const Text('A button'),
                  ),
                ],
              );
            },
          ),
        ),
      ),
    );
  }
}

Koodijupis iga implementeeritav klass on widget.

Hello World näide[muuda | muuda lähteteksti]

Hello worldi koodijupp Flutteris näeb välja järgmine:

import 'package:flutter/material.dart';

void main() => runApp(HelloWorldApp());

class HelloWorldApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Hello World App',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Hello World App'),
        ),
        body: Center(
          child: Text('Hello World'),
        ),
      ),
    );
  }
}

IDE tugi[muuda | muuda lähteteksti]

Flutterit ja tema pistikprogramme (plugin) ametlikult toetavad IDE-d on:

Viited[muuda | muuda lähteteksti]

  1. Sky: An Experiment Writing Dart for Mobile (Dart Developer Summit 2015), vaadatud 9. jaanuaril 2023
  2. "Flutter 1.0: Google's Portable UI Toolkit" (inglise). Vaadatud 9. jaanuaril 2023.
  3. Pandey, Shivanchal (3. aprill 2020). "What's New in Flutter 1.12?". Medium (inglise). Vaadatud 9. jaanuaril 2023.
  4. Sells, Chris (8. mai 2020). "Announcing Flutter 1.17". Flutter (inglise). Vaadatud 9. jaanuaril 2023.
  5. Sells, Chris (8. juuli 2020). "Announcing Flutter Linux Alpha with Canonical". Flutter (inglise). Vaadatud 9. jaanuaril 2023.
  6. Sells, Chris (5. oktoober 2020). "Announcing Flutter 1.22". Flutter (inglise). Vaadatud 9. jaanuaril 2023.
  7. Sells, Chris (3. märts 2021). "What's New in Flutter 2.0". Flutter (inglise). Vaadatud 9. jaanuaril 2023.
  8. khan, Shaiq (3. november 2021). "Flutter 2.5 — What's New In Flutter". Medium (inglise). Originaali arhiivikoopia seisuga 9. jaanuar 2023. Vaadatud 9. jaanuaril 2023.
  9. "Flutter 3.0.0 release notes". docs.flutter.dev (inglise). Vaadatud 9. jaanuaril 2023.
  10. Sneath, Tim (30. august 2022). "Announcing Flutter 3.3 at Flutter Vikings". Flutter (inglise). Vaadatud 9. jaanuaril 2023.
  11. 11,0 11,1 11,2 "Flutter architectural overview". docs.flutter.dev (inglise). Vaadatud 9. jaanuaril 2023.
  12. "Somveda". somveda.com. Originaali arhiivikoopia seisuga 9. jaanuar 2023. Vaadatud 9. jaanuaril 2023.
  13. "With Flutter, Google Throws Dart at Cross-Platform Mobile Development -". ADTmag (Ameerika inglise). Vaadatud 9. jaanuaril 2023.
  14. Leler, Wm (2. aprill 2019). "Why Flutter Uses Dart". HackerNoon.com (inglise). Vaadatud 9. jaanuaril 2023.
  15. 15,0 15,1 "Introduction to widgets". docs.flutter.dev (inglise). Vaadatud 9. jaanuaril 2023.
  16. 16,0 16,1 16,2 TILLU, JAY (21. jaanuar 2020). "4. What is Widget in flutter ? Let's clear the basics first". Jay Tillu (inglise). Vaadatud 9. jaanuaril 2023.