Flutter (software)

Z Wikipedie, otevřené encyklopedie
Skočit na navigaci Skočit na vyhledávání
Flutter
Logo
Vývojář Google a komunita
První vydání Alpha (v0.0.6) / Květen 2017
Aktuální verze 2.0.4 (2. dubna 2021)
Operační systém Android, iOS, Google Fuchsia, Web platform, Windows, MacOS, Linux
Vyvíjeno v C, C++, Dart[1]
Typ softwaru Aplikační framework
Licence Nová BSD licence
Web flutter.dev, himdeve.com
Některá data mohou pocházet z datové položky.

Flutter je open-source uživatelské rozhraní SDK na vývoj softwaru, vytvořené společností Google. Používá se na vývoj aplikací pro Android, iOS, Windows, MacOS, Linux, Google Fuchsia a web.

První verze Flutteru byla známá pod označením „Sky“ a běžela na operačním systému Android. Byla odhalena na vývojářském summitu Dart v roce 2015, s tím, že je možné v této verzi Flutteru vykreslit na obrazovku 120 snímků za sekundu konzistentní rychlostí.[2] Hlavním tématem během Google Developer Dní v Šanghaji bylo oznámení ukázky vydání Flutter Release 2 společností Google, což představovalo poslední velké vydání před oficiální verzí Flutter 1.0. Následně 4. prosince 2018 byla na akci Flutter Live vydána verze Flutter 1.0, která označuje první „stabilní“ verzi tohoto Frameworku. 11. prosince 2019 byla na události Flutter Interactive vydána verze Flutter 1.12.[3]

Architektura frameworku[editovat | editovat zdroj]

Mezi hlavní komponenty Flutteru patří:

  • Platforma Dart
  • Flutter modul
  • Základní knihovna
  • Designově specifické widgety

Platforma Dart[editovat | editovat zdroj]

Flutter aplikace jsou napsány v jazyce Dart a využívají mnohé pokročilejší funkce jazyka.[4]

V systémech Windows, MacOS a Linux se prostřednictvím polo-oficiálního projektu Flutter Desktop Embedding, spouští Flutter ve virtuálním stroji Dartu, který obsahuje spouštěcí modul just-in-time. Při psaní a ladění aplikace používá Flutter „Just In Time“ (okamžitou) kompilaci, která umožňuje „hot reload“ (Rychlé obnovení), pomocí kterého je možné vložit změny zdrojových souborech do běžící aplikace. Flutter dokonce rozšiřuje tuto funkci o podporu okamžitého obnovení stavu aplikace (Stateful hot reload), kde ve většině případů se změny zdrojového kódu mohou okamžitě projevit v běžící aplikaci, aniž ji bylo nutné restartovat nebo by se ztratil její aktuální stav.[5]

Vydané verze Flutter aplikací jsou kompilované s ahead-of-time (AOT) kompilací v systémech Android i iOS,[6] což umožňuje vysoký výkon Flutteru na mobilních zařízeních.[7]

Flutter modul[editovat | editovat zdroj]

Flutter modul, je primárně napsán v C++ a poskytuje podporu renderování (vykreslování) na low-level (nízké úrovni) pomocí grafické knihovny Skia od společnosti Google. Kromě toho se připojuje k SDK nástrojem specifickým pro platformu, jako je Android a iOS.[4] Flutter modul je přenosný runtime modul na hostování Flutter aplikací. Implementuje základní knihovny Flutteru včetně animace a grafiky, vstupně-výstupních souborů a sítí, podporu přístupnosti, architekturu doplňků a Dart runtime s kompilaci Dart nástrojů. Většina vývojářů bude interagovat s Flutterem pouze prostřednictvím Flutter frameworku, který poskytuje moderní, reaktivní rozhraní a bohatou sadu základních widgetů i widgetů pro platformu a základní rozložení aplikací.[zdroj?]

Základní knihovna[editovat | editovat zdroj]

Základní knihovna, napsaná v jazyce Dart, poskytuje základní třídy a funkce, které se používají k vytváření aplikací pomocí Flutteru, jako jsou API rozhraní pro komunikaci s Flutter modulem.[4][8]

Widgety[editovat | editovat zdroj]

Uživatelský Design ve Flutteru zahrnuje použití kompozice na sestavení / vytváření „Widgetů“ z jiných Widgetů. Trik na pochopení tohoto je uvědomit si, že každý strom komponentů (Widgetů), který je sestaven pod jedinou metodou build(), se také označuje jako samostatný Widget. Důvodem je skutečnost, že tyto menší Widgety se skládají z ještě dalších menších Widgetů a každý z nich má svou vlastní metodu build(). Takto Flutter využívá kompozici.[zdroj?]

Podle dokumentace: „Widget je neměnný popis části uživatelského rozhraní.“ Zjednodušeně lze o tom přemýšlet jako o neměnném modelu. Nutné je však mít na paměti, že ve Flutteru je mnoho typů Widgetů a ne všechny je možné vidět nebo je upravovat. Například Text je Widget, ale i jeho TextStyle je Widget, který definuje věci jako velikost, barvu, font a tloušťku písma. Existují Widgety, které reprezentují objekty (Text), jiné představující charakteristiky (TextStyle), a dokonce takové, které budují další objekty, jako například FutureBuilder a StreamBuilder.[zdroj?]

Složité Widgety lze vytvořit kombinací mnoha jednodušších Widgetů a aplikace je vlastně následně pouze největším Widgetem z nich (často nazývaný „MyApp“). Widget „MyApp“ obsahuje všechny ostatní Widgety, které mohou obsahovat ještě menší Widgety, a spolu tvoří celou aplikaci.[zdroj?]

Na sestavení Flutter aplikací se však striktně nevyžaduje použití Widgetů. Alternativní možností, kterou obvykle používají pouze lidé, kteří rádi ovládají každý pixel vykreslen na obrazovce, je přímé použití základních metod knihovny. Tyto metody se dají použít na vykreslení různých tvarů, textu a snímků přímo na plátno obrazovky. Tato schopnost Flutteru se využívá v některých herních enginech.[zdroj?]

Flutter i obecně funguje spíše jako herní engine. Uživatelské rozhraní je sestaveno a vykreslené na plátno (canvas Skia) podle toho, jak se mění pomocí metody každého Widgetu 'build()'. Flutter aktualizuje uživatelské rozhraní rychlostí 60 snímků / s (60 fps) nebo 120 fps na zařízeních, které jsou schopny se aktualizovat frekvencí 120 Hz.[9]

Designově specifické Widgety[editovat | editovat zdroj]

Flutter framework obsahuje dvě sady Widgetů, které odpovídají konkrétnímu designu jazyků. Material Design Widgety implementují designový jazyk Google se stejným názvem (Material Design) a Cupertino Widgety implementují pokyny společnosti Apple pro iOS Human rozhraní.[4][10][11][12]

Příklad[editovat | editovat zdroj]

Ahoj Svět[editovat | editovat zdroj]

Program Ahoj Svět ve Flutteru vypadá následovně:[9]

import 'package:flutter/material.dart';
 
void main() => runApp(MyApp());
 
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Ahoj Svet',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Ahoj Svet'),
        ),
        body: Center(
      child: Text('Ahoj Svet'),
        ),
      ),
    ),      
  }
}

Odkazy[editovat | editovat zdroj]

Reference[editovat | editovat zdroj]

  1. FAQ - Flutter [online]. [cit. 2018-08-08]. Dostupné online. (anglicky) 
  2. AMADEO, Ron. Google’s Dart language on Android aims for Java-free, 120 FPS apps. Ars Technica [online]. 2015-05-01 [cit. 2020-05-07]. Dostupné online. (anglicky) 
  3. Google Developers Blog [online]. [cit. 2020-05-07]. Dostupné online. (anglicky) 
  4. a b c d Technical overview. flutter.dev [online]. [cit. 2020-05-07]. Dostupné online. (anglicky) 
  5. ON, Wm Leler. Why Flutter Uses Dart | Hacker Noon. hackernoon.com [online]. [cit. 2020-05-07]. Dostupné online. 
  6. STEPHENWZL. Flutter’s Compilation Patterns. Medium [online]. 2018-08-06 [cit. 2020-05-07]. Dostupné online. (anglicky) 
  7. Himdeve development - Android | iOS | Flutter - Tutorial & development. Himdeve development [online]. [cit. 2020-05-07]. Dostupné online. (anglicky) 
  8. foundation library - Dart API. api.flutter.dev [online]. [cit. 2020-05-07]. Dostupné online. 
  9. a b Flutter CZ / SK - # 1.1 - První aplikace - Jednoduché WebView [online]. Himdeve development [cit. 2020-05-07]. Dostupné online. (česky) 
  10. Material Components widgets. flutter.dev [online]. [cit. 2020-05-07]. Dostupné online. (anglicky) 
  11. Cupertino (iOS-style) widgets. flutter.dev [online]. [cit. 2020-05-07]. Dostupné online. (anglicky) 
  12. Themes - iOS - Human Interface Guidelines - Apple Developer. developer.apple.com [online]. [cit. 2020-05-07]. Dostupné online. 

Externí odkazy[editovat | editovat zdroj]