Kasutaja:RaLll/liivakast

Allikas: Vikipeedia

Flutter on Google poolt loodud avatud lähtekoodiga kasutajaliidese tarkvaraarenduskomplekt.

Seda kasutatakse peamiselt mitmeplatvormsete rakenduste loomiseks järgnevatele operatsioonisüsteemidele: Android, iOS, Linux, macOS, Windows, Google Fuchsia.

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

Ajalugu[muuda | muuda lähteteksti]

Flutterit esitleti esimest korda maailmale nime all Sky 2015. aastal Dart Developer Summitil, kus avalikustati, et Flutter baseerub Dart programmeerimise keelel ning oli mõeldud ainult Androidi operatsioonisüsteemile. Lisaks väideti ka, et Flutter suudab renderdada konstantselt kaadrisagedusega 120.[1] Esimene versioon Flutterist Flutter 1.0 tuli välja 4. detsembril 2018. aastal ning see versioon sisaldas juba ka tuge iOS-ile. [2]

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

8. mail 2020. aastal 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. aastal saabus Google'i ja Canonicali koostöös Flutteri tugi Linuxile.[5]

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

3. märtsil 2021. aastal tuli Google välja senise suurima uuendusega ning seega 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. aastal uuendati Flutter 2.5 peale. Uuendus parandas Androidi täisekraani režiimi kasutatavust ning keskendus enamjaolt jõudluse parandamisele.[8]

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

30. augustil 2022. aastal uuendati Flutter 3.3 peale. Uuendusega kaasnes uus graafika mootor Impeller, mis arendas Flutter renderdamist jõuliselt.[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 arhitetuuri suured osad on:

  • 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 madala tasemelist Flutteri tuuma API rakendamist, mille hulgas on ka graafika, teksti paigutus, faili ja võrgu sisend-väljund ja palju muud.[11]

Flutteri teek[muuda | muuda lähteteksti]

Flutteri teek on kirjutatud Darti keeles ning kannab endas põhilisi klasse ja funktsioone, mida kasutakse rakendustes mootoriga suhtlemiseks.[12]

Dart[muuda | muuda lähteteksti]

Dart on programmeerimiskeel, mis loodi 2011. aastal Google'i poolt. Dart sarnaneb oma süntaksi poolelt C# ja Javaga, mistõttu on seda arendajatel väga kerge õppida ning ka kasutusele võtta.

Flutteri valis Darti oma programmeeris keeleks, 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 muudavad 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 veel mitmest widgetist, mis kõik kokku moodustavad hierarhiailise 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 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 pluginaid ametlikult toetavad IDE-d on:

  • Visual Studio Code
  • Android Studio
  • IntelliJ IDEA
  • Emacs

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). 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. 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.