Flutter: Unterschied zwischen den Versionen
Codica (Diskussion | Beiträge) |
Codica (Diskussion | Beiträge) |
||
Zeile 46: | Zeile 46: | ||
* https://github.com/dart-lang/sdk/issues/44848 | * https://github.com/dart-lang/sdk/issues/44848 | ||
− | === JSON serialization === | + | === JSON === |
+ | |||
+ | ==== JSON serialization ==== | ||
Dart hilft beim Einpacken von Daten in JSON und dem Auspacken. Allerdings ist es nicht [[JavaScript]] oder [[TypeScript]], das ein first-class-Handling von [[JSON]] ermöglichen. | Dart hilft beim Einpacken von Daten in JSON und dem Auspacken. Allerdings ist es nicht [[JavaScript]] oder [[TypeScript]], das ein first-class-Handling von [[JSON]] ermöglichen. | ||
Zeile 60: | Zeile 62: | ||
* https://codewithandrea.com/articles/parse-json-dart/ | * https://codewithandrea.com/articles/parse-json-dart/ | ||
+ | ==== Weitere Libraries für Behandlung von JSON in Dart/Flutter ==== | ||
Weitere hilfreiche Libraries mit JSON | Weitere hilfreiche Libraries mit JSON | ||
* [https://pub.dev/packages/json_path json_path] | * [https://pub.dev/packages/json_path json_path] | ||
* [https://pub.dev/packages/rfc_6901 rfc_6901 - JSONPointer Implementierung] - kann JSON-Strukturen bearbeiten | * [https://pub.dev/packages/rfc_6901 rfc_6901 - JSONPointer Implementierung] - kann JSON-Strukturen bearbeiten | ||
+ | * [https://pub.dev/packages/flutter_json_view flutter_json_view] - kann JSON-Strukturen anzeigen | ||
== Libraries == | == Libraries == |
Version vom 13. Januar 2025, 16:11 Uhr
- Flutter ist ein Open Source-Framework, um native Android-, iOS-, Linux- und Windows- sowie Web-Anwendungen zu bauen.
- mit Fluxbuilder
Als Programmiersprache wird Dart genutzt. Die Benutzerelemente sehen zwar aus wie native Elemente; sie werden aber auf Pixelbasis von den Flutter-Komponenten selbst errechnet.
Programmierparadigmen
State Management
Das State Management ist ähnlich demjenigen von React und React Native, allerdings klassenbasiert. Die neueren funktionsbasierten Hooks (useXXX) aus der React-Welt gibt es in Flutter nicht. Dafür gibt es viele ähnliche App-State-Management-Libraries, teilweise Übertragungen aus der React-Welt wie Redux und MobX.
Das State-Management erfolgt (ohne Library-Ergänzung) mit
- StatefulWidget oder
- InheritedWidget.
Man kann sich für eine App drei Schichten vorstellen:
- UI (möglichst keine Logik, keine veränderbaren Daten)
- App State-Management (nur Logik und Daten)
- Business Logic (nur Logik und Daten, Persistenz, Netzwerk-Zugriff ...)
Siehe auch
immutable state
Benütze so oft als möglich "final"!
Besonderheiten
Dateizugriff auf Media-Dateien beschränkt
Beim Auflisten des Inhalts eines Verzeichnisses erscheinen Dateien nicht. Das liegt daran, dass standardmäßig unter Android keine Berechtigungen erlaubt sind, andere Dateien als Media-Dateien (JPEG, PDF etc) zu lesen.
Man muss die Berechtigungen sowohl in die Manifest.xml eintragen als auch vom Benutzer anfordern. Siehe Permission.request in plugin permission_handler. In Frage kommen insbesondere:
- READ_MEDIA_IMAGES
- READ_MEDIA_VIDEO
- READ_MEDIA_AUDIO
oder
Siehe
JSON
JSON serialization
Dart hilft beim Einpacken von Daten in JSON und dem Auspacken. Allerdings ist es nicht JavaScript oder TypeScript, das ein first-class-Handling von JSON ermöglichen.
Hilfreiche Libraries sind
- json_serializable
- built_value
- deep_pick
- equatable
Siehe auch
Weitere Libraries für Behandlung von JSON in Dart/Flutter
Weitere hilfreiche Libraries mit JSON
- json_path
- rfc_6901 - JSONPointer Implementierung - kann JSON-Strukturen bearbeiten
- flutter_json_view - kann JSON-Strukturen anzeigen
Libraries
AppState-Libraries
Sehr einfache AppState-Libraries sind
- get_it und
- watch_it
UI-Libraries
Datenbank
SurrealDB
SurrealDB kann mit dem Package surrealdb von Duhanbalci genutzt werden.
Problem mit Websocket-Subprotokoll
Stand Jan. 2025 gibt es noch ein Problem mit einem "Subprotokoll" der Websocket-Schnittstelle. Näheres dazu unter dem (allerdings geschlossenen) Issue auf GitHub.
Weiterführendes
Siehe