Flutter
Flutter ist ein Framework zur Entwicklung
grafischer Applikationen in Dart, welche auf den folgenden
Plattformen lauffähig sind:
- in Webbrowsern
- nativ auf den Mobil-Betriebssystemen Android und iOS
- nativ auf den Desktop-Betriebssystemen Linux, macOS und Windows
Cross-Kompilierung nativer Flutter Applikationen ist nicht möglich.
Diskussion
Chancen:
- Grafische Applikationen können mit keinem oder geringem Mehraufwand für mehrere Plattformen
angeboten werden.
- Aussehen und Verhalten sind auf den Plattformen weitestgehend gleich.
- Bei Web-Applikationen kann Komplexität durch JavaScript (inkl. Loader, Bundler) vermieden werden.
- Hot Reload ermöglicht kurze
Entwicklungszyklen
Risiken:
- Google könnte sein Engagement in Flutter und/oder Dart reduzieren oder beenden.
- Flutter könnte nicht oder nicht schnell genug an Veränderungen in und Bugs auf der jeweiligen Plattform
angepasst werden.
- Die Performance komplexer Applikationen könnte unbefriedigend sein.
- Flutter Widgets:
- Widgets können in Aussehen und Verhalten von der zugrundeliegenden Plattform abweichen,
insbesondere bzgl. Scrolling und Accessibility.
- In Web-Applikationen kann bei Verwendung des
CanvasKit Renderers, der
DOM-Baum nicht abgefragt oder verändert werden, z.B. durch Suche, Webscraping oder Adblocker.
Der Web Renderer wird evtl. nicht mehr weitergeführt.
- Dart muss im Frontend verwendet werden
Architektur
Flutter Applikationen werden mit dem Flutter Framework in Dart entwickelt.
Die Flutter Widgets sind ebenfalls in Dart implementiert.
Die Flutter Engine rendert die Widgets
mittels Skia
oder Impeller und bildet die
Schnittstelle zur zugrundeliegenden Plattform.
Das Programmiermodell ist reaktiv:
- Die von
widgets.Widget
abgeleiteten Klassen stellen lediglich unveränderliche Konfigurationen der Widgets dar.
- Die tatsächlichen Widget-Objekte sind Instanzen der von
widgets.Element
abgeleiteten
Klassen. Sie werden durch Aufruf der zugehörigen
Widget.createElement()
Methode erzeugt.
- Layouting und Rendering der Widgets erfolgen durch Instanzen von Klassen,
die von
widgets.RenderObject
abgeleitet sind. Sie werden durch Aufruf der zugehörigen
Element.renderObject()
Methode erzeugt.
TODO: Veränderung
Widget.canUpdate()
updateRenderObject()
TODO minimiert Garbage Collection: Objekte bleiben erhalten, Objekte sind klein, da sie wenig Verantwortung haben
https://medium.com/flutter/flutter-dont-fear-the-garbage-collector-d69b3ff1ca30
Benutzung
TODO
StatelessWidget
StatefulWidget
RenderObjectElement
Software, die Flutter verwendet
Desktopumgebungen: Fuchsia, Ubuntu
- Desktop Apps: AuthPass, Dart & Flutter DevTools, Flokk, Flutter Widget Inspector, Harmonoid, Invoice Ninja App, QuikFlow, Rive, Shortcut Keeper, Superlist, Ubuntu Desktop Installer, Weatherian, Wonderous
- Mobile Apps: AuthPass, Epic Ride Weather, Every Door, GitJournal, Google Earth, Helm, inKino, Insight Timer, Invoice Ninja App, My BMW, Reflectly, Rive, Rosbank Business App, Superlist, Time Cop, Tonal, Voiceliner, Wonderous
- in Rust: Save Our Secrets
Alle Angaben ohne Gewähr
• Home
• Kontakt