Marc Marburger, Uwe Post
Flutter und Dart
Das umfassende Handbuch für die professionelle App-Entwicklung - Ausgabe 2025
Marc Marburger, Uwe Post
Flutter und Dart
Das umfassende Handbuch für die professionelle App-Entwicklung - Ausgabe 2025
- Gebundenes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
Wenn es um plattformübergreifende App-Entwicklung geht, macht Flutter Träume wahr: GUI-Bibliotheken, die das beste aus der Android- und der iOS-Welt flexibel zur Auswahl stellen, starke Tools und moderne Sprachfeatures - erleben Sie selbst, wie produktiv und elegant sich damit arbeiten lässt. Hier finden Sie alles, was Sie für den Einstieg und die professionelle Programmierung brauchen. Lernen Sie das Framework Flutter und die Sprache Dart mit all ihren Stärken kennen. Die Autoren führen in alle wichtigen Konzepte ein und vergessen dabei nicht, auf Fallstricke hinzuweisen. Mit vielen…mehr
Andere Kunden interessierten sich auch für
- Hauke FehrEigene Apps programmieren24,90 €
- Richard RoseFlutter & Dart Kochbuch39,90 €
- Thomas TheisEinstieg in Kotlin29,90 €
- Stefan RiedelPower Apps und Power Automate49,90 €
- Michael KoflerSwift49,90 €
- Mira JagoApp-Entwicklung mit Flutter für Dummies28,00 €
- Uwe PostAndroid-Apps entwickeln mit Java29,90 €
-
-
-
Wenn es um plattformübergreifende App-Entwicklung geht, macht Flutter Träume wahr: GUI-Bibliotheken, die das beste aus der Android- und der iOS-Welt flexibel zur Auswahl stellen, starke Tools und moderne Sprachfeatures - erleben Sie selbst, wie produktiv und elegant sich damit arbeiten lässt. Hier finden Sie alles, was Sie für den Einstieg und die professionelle Programmierung brauchen. Lernen Sie das Framework Flutter und die Sprache Dart mit all ihren Stärken kennen. Die Autoren führen in alle wichtigen Konzepte ein und vergessen dabei nicht, auf Fallstricke hinzuweisen. Mit vielen Beispielen, konkreten Praxistipps und Sinn für die wichtigen Details.
Aus dem Inhalt:
Installation und WerkzeugeAbhängigkeiten verwaltenWidgets, Themes und StylesHot Reload und effiziente WorkflowsLokalisierung und BarrierefreiheitReleases für iOS und AndroidFlutter Modules, Natives einbetten und C-SchnittstellenUnit-Tests, Widgets testenLogging und Analytics
Aus dem Inhalt:
Installation und WerkzeugeAbhängigkeiten verwaltenWidgets, Themes und StylesHot Reload und effiziente WorkflowsLokalisierung und BarrierefreiheitReleases für iOS und AndroidFlutter Modules, Natives einbetten und C-SchnittstellenUnit-Tests, Widgets testenLogging und Analytics
Produktdetails
- Produktdetails
- Rheinwerk Computing
- Verlag: Rheinwerk Computing / Rheinwerk Verlag
- Artikelnr. des Verlages: 459/10972
- 2. Aufl.
- Seitenzahl: 633
- Erscheinungstermin: 8. Juli 2025
- Deutsch
- Abmessung: 240mm x 168mm
- ISBN-13: 9783367109722
- ISBN-10: 336710972X
- Artikelnr.: 73424664
- Herstellerkennzeichnung
- Rheinwerk Verlag GmbH
- Rheinwerkallee 4
- 53227 Bonn
- Info@rheinwerk-verlag.de
- Rheinwerk Computing
- Verlag: Rheinwerk Computing / Rheinwerk Verlag
- Artikelnr. des Verlages: 459/10972
- 2. Aufl.
- Seitenzahl: 633
- Erscheinungstermin: 8. Juli 2025
- Deutsch
- Abmessung: 240mm x 168mm
- ISBN-13: 9783367109722
- ISBN-10: 336710972X
- Artikelnr.: 73424664
- Herstellerkennzeichnung
- Rheinwerk Verlag GmbH
- Rheinwerkallee 4
- 53227 Bonn
- Info@rheinwerk-verlag.de
Marc Marburger hat langjährige Erfahrung in der App- und Softwareentwicklung. Angefangen hat er nach dem Abschluss in Informatik mit C++ und Assembler in der Industrieautomatisierung. Plattformübergreifende Apps beschäftigen ihn seit 2012: C# auf der Windows-Plattform, Xamarin, Flutter und Dart, Rust. Letztere setzt er täglich als freiberuflicher Softwareentwickler immer häufiger in Kundenprojekten ein.
Materialien zum Buch ... 19
TEIL I. Einführung ... 21
1. Über dieses Buch ... 23
1.1 ... Was Sie in diesem Buch lernen werden ... 24
1.2 ... Null-Safety als Default-Einstellung ab Flutter 2.2 ... 26
1.3 ... Danksagung ... 26
2. Installation und die Wahl der IDE ... 27
2.1 ... Flutter herunterladen und installieren ... 27
2.2 ... Die Wahl der IDE ... 31
2.3 ... Die Flutter-Installation voll im Griff ... 36
3. Warum Sie mit Dart voll ins Schwarze treffen ... 39
3.1 ... Der Ursprung von Dart ... 40
3.2 ... Ein erstes Dart-Programm ... 41
3.3 ... Wichtige Begleiter ... 43
3.4 ... Variablen ... 44
3.5 ... Datentypen ... 48
3.6 ... Funktionen ... 66
3.7 ... Klassen, Mixins und Enums ... 77
3.8 ... Generika ... 108
3.9 ... Collections ... 111
3.10 ... Kontrollstrukturen ... 127
3.11 ... Exceptions und Errors ... 134
3.12 ... Asynchrone Programmierung ... 138
3.13 ... Die Library ... 147
3.14 ... Ein Projekt strukturieren ... 149
3.15 ... Code dokumentieren ... 150
3.16 ... Null-Safety ... 152
3.17 ... Zusammenfassung ... 156
4. Pubs: Abhängigkeiten komfortabel verwalten ... 159
4.1 ... Von der Library zum Package ... 159
4.2 ... Ein Meer aus pubs ... 160
4.3 ... Wo Licht ist, da fällt auch Schatten ... 160
4.4 ... Packages verwenden ... 162
4.5 ... Versionen ... 166
4.6 ... Der System-Cache ... 169
4.7 ... Der Build Runner ... 169
4.8 ... Zusammenfassung ... 170
TEIL II. Bedienoberflächen ... 171
5. Widgets ... 173
5.1 ... Ein erstes Widget ... 174
5.2 ... Stateful Widgets ... 182
5.3 ... Material Design und Cupertino Design ... 194
5.4 ... Vom Widget zum Rendering Object ... 197
5.5 ... Keys ... 201
5.6 ... Zusammenfassung ... 205
6. Layouting ... 207
6.1 ... Positionierung ... 207
6.2 ... Scroll-Widgets ... 231
6.3 ... Constraints, Höhen und Breiten ... 259
6.4 ... MediaQueryData ... 267
6.5 ... Overlay ... 273
6.6 ... Die Gerüste ... 283
6.7 ... Zusammenfassung ... 294
7. Navigation ... 295
7.1 ... Ein erster Sprung ... 295
7.2 ... Wenn Flutter nach dem Weg fragt: Named Routes ... 299
7.3 ... Eine Route austauschen ... 301
7.4 ... Routen entfernen ... 303
7.5 ... Großflächig aufräumen mit push und pop ... 304
7.6 ... NavigatorObserver ... 304
7.7 ... Daten austauschen ... 305
7.8 ... Den Android-Back-Button zähmen ... 308
7.9 ... Routen als URIs ... 309
7.10 ... Verschachtelte Navigator-Objekte ... 309
7.11 ... Navigator 2.0 ... 311
7.12 ... Zusammenfassung ... 329
8. Früchte am Baum: InheritedWidgets ... 331
8.1 ... Ein InheritedWidget ... 331
8.2 ... Das eigene InheritedWidget: TimeInfo ... 332
8.3 ... Zusammenfassung ... 335
9. BloCs: View Logic aus dem Weg räumen ... 337
9.1 ... Der BloC ... 337
9.2 ... BloC und ValueListenable ... 338
9.3 ... ChangeNotifier ... 342
9.4 ... Streams ... 345
9.5 ... Futures ... 352
9.6 ... Frische Pizza mit flutter_bloc ... 355
9.7 ... Zusammenfassung ... 358
10. Mit dem Nutzer interagieren ... 359
10.1 ... Button, TextField und Co ... 359
10.2 ... Wischen, Schieben und Ziehen ... 380
10.3 ... Dialogs und die Snackbar ... 387
11. Themes und Styles ... 395
11.1 ... BoxDecoration ... 395
11.2 ... Clipping ... 399
11.3 ... Text ... 403
11.4 ... ThemeData und CupertinoThemeData ... 406
11.5 ... Effekte durch Widgets ... 406
12. Animationen ... 411
12.1 ... Implizite Animationen ... 411
12.2 ... Tween-Animationen ... 416
12.3 ... Explizite Animationen ... 419
12.4 ... AnimatedWidget und der AnimatedBuilder ... 424
13. Arbeiten mit Canvas und Paint ... 429
13.1 ... CustomPaint und CustomPainter ... 429
13.2 ... Zusammenfassung ... 437
TEIL III. Assets und Medien ... 439
14. Assets und Medien ... 441
14.1 ... Bilder ... 441
14.2 ... Icons ... 446
14.3 ... Videos ... 450
14.4 ... Schriften ... 452
14.5 ... Textressourcen ... 453
14.6 ... Zusammenfassung ... 455
15. Den Nutzerkreis vergrößern: Localization und Accessibility ... 457
15.1 ... Localization ... 457
15.2 ... Accessibility ... 475
15.3 ... Zusammenfassung ... 486
16. Die Cloud: Unendliche Weiten ... 487
16.1 ... Daten mit GET beziehen ... 488
16.2 ... Ein eigener (HTTP-)Client ... 489
16.3 ... POST, PUT und PATCH ... 493
16.4 ... Delete ... 500
16.5 ... Mehr zu Requests ... 502
16.6 ... Das Package dio ... 505
16.7 ... JSON-Serialisierung und -Deserialisierung ... 512
16.8 ... Die Webview ... 517
16.9 ... Zusammenfassung ... 532
17. Persistieren: Caches und Datenbanken ... 533
17.1 ... shared_preferences ... 534
17.2 ... flutter_cache_manager ... 538
17.3 ... Datenbanken ... 542
17.4 ... NoSQL mit Hive CE ... 554
17.5 ... Eine wirklich nützliche Beispiel-App ... 556
17.6 ... Zusammenfassung ... 567
TEIL IV. Sensoren und Hardware ... 569
18. Mit der Außenwelt kommunizieren ... 571
18.1 ... Geräteinformationen ... 571
18.2 ... Bewegungssensoren und Batterie ... 573
18.3 ... Verbindungsdaten ... 574
18.4 ... Berechtigungen ... 575
18.5 ... Kamera und Fotobibliothek ... 576
18.6 ... Standortbestimmung ... 577
18.7 ... Zusammenfassung ... 579
19. Den Kanal wechseln: Channels zur Plattform ... 581
19.1 ... Method Channels ... 582
19.2 ... Foreign Function Interface (FFI) ... 588
19.3 ... Hybride Apps ... 592
TEIL V. Endgame ... 601
20. Analytics, Tests und Releases ... 603
20.1 ... Logging ... 603
20.2 ... Analytics ... 605
20.3 ... Debugging ... 605
20.4 ... Profiling ... 607
20.5 ... Testing ... 609
20.6 ... Releases ... 620
20.7 ... Zusammenfassung ... 624
Index ... 625
TEIL I. Einführung ... 21
1. Über dieses Buch ... 23
1.1 ... Was Sie in diesem Buch lernen werden ... 24
1.2 ... Null-Safety als Default-Einstellung ab Flutter 2.2 ... 26
1.3 ... Danksagung ... 26
2. Installation und die Wahl der IDE ... 27
2.1 ... Flutter herunterladen und installieren ... 27
2.2 ... Die Wahl der IDE ... 31
2.3 ... Die Flutter-Installation voll im Griff ... 36
3. Warum Sie mit Dart voll ins Schwarze treffen ... 39
3.1 ... Der Ursprung von Dart ... 40
3.2 ... Ein erstes Dart-Programm ... 41
3.3 ... Wichtige Begleiter ... 43
3.4 ... Variablen ... 44
3.5 ... Datentypen ... 48
3.6 ... Funktionen ... 66
3.7 ... Klassen, Mixins und Enums ... 77
3.8 ... Generika ... 108
3.9 ... Collections ... 111
3.10 ... Kontrollstrukturen ... 127
3.11 ... Exceptions und Errors ... 134
3.12 ... Asynchrone Programmierung ... 138
3.13 ... Die Library ... 147
3.14 ... Ein Projekt strukturieren ... 149
3.15 ... Code dokumentieren ... 150
3.16 ... Null-Safety ... 152
3.17 ... Zusammenfassung ... 156
4. Pubs: Abhängigkeiten komfortabel verwalten ... 159
4.1 ... Von der Library zum Package ... 159
4.2 ... Ein Meer aus pubs ... 160
4.3 ... Wo Licht ist, da fällt auch Schatten ... 160
4.4 ... Packages verwenden ... 162
4.5 ... Versionen ... 166
4.6 ... Der System-Cache ... 169
4.7 ... Der Build Runner ... 169
4.8 ... Zusammenfassung ... 170
TEIL II. Bedienoberflächen ... 171
5. Widgets ... 173
5.1 ... Ein erstes Widget ... 174
5.2 ... Stateful Widgets ... 182
5.3 ... Material Design und Cupertino Design ... 194
5.4 ... Vom Widget zum Rendering Object ... 197
5.5 ... Keys ... 201
5.6 ... Zusammenfassung ... 205
6. Layouting ... 207
6.1 ... Positionierung ... 207
6.2 ... Scroll-Widgets ... 231
6.3 ... Constraints, Höhen und Breiten ... 259
6.4 ... MediaQueryData ... 267
6.5 ... Overlay ... 273
6.6 ... Die Gerüste ... 283
6.7 ... Zusammenfassung ... 294
7. Navigation ... 295
7.1 ... Ein erster Sprung ... 295
7.2 ... Wenn Flutter nach dem Weg fragt: Named Routes ... 299
7.3 ... Eine Route austauschen ... 301
7.4 ... Routen entfernen ... 303
7.5 ... Großflächig aufräumen mit push und pop ... 304
7.6 ... NavigatorObserver ... 304
7.7 ... Daten austauschen ... 305
7.8 ... Den Android-Back-Button zähmen ... 308
7.9 ... Routen als URIs ... 309
7.10 ... Verschachtelte Navigator-Objekte ... 309
7.11 ... Navigator 2.0 ... 311
7.12 ... Zusammenfassung ... 329
8. Früchte am Baum: InheritedWidgets ... 331
8.1 ... Ein InheritedWidget ... 331
8.2 ... Das eigene InheritedWidget: TimeInfo ... 332
8.3 ... Zusammenfassung ... 335
9. BloCs: View Logic aus dem Weg räumen ... 337
9.1 ... Der BloC ... 337
9.2 ... BloC und ValueListenable ... 338
9.3 ... ChangeNotifier ... 342
9.4 ... Streams ... 345
9.5 ... Futures ... 352
9.6 ... Frische Pizza mit flutter_bloc ... 355
9.7 ... Zusammenfassung ... 358
10. Mit dem Nutzer interagieren ... 359
10.1 ... Button, TextField und Co ... 359
10.2 ... Wischen, Schieben und Ziehen ... 380
10.3 ... Dialogs und die Snackbar ... 387
11. Themes und Styles ... 395
11.1 ... BoxDecoration ... 395
11.2 ... Clipping ... 399
11.3 ... Text ... 403
11.4 ... ThemeData und CupertinoThemeData ... 406
11.5 ... Effekte durch Widgets ... 406
12. Animationen ... 411
12.1 ... Implizite Animationen ... 411
12.2 ... Tween-Animationen ... 416
12.3 ... Explizite Animationen ... 419
12.4 ... AnimatedWidget und der AnimatedBuilder ... 424
13. Arbeiten mit Canvas und Paint ... 429
13.1 ... CustomPaint und CustomPainter ... 429
13.2 ... Zusammenfassung ... 437
TEIL III. Assets und Medien ... 439
14. Assets und Medien ... 441
14.1 ... Bilder ... 441
14.2 ... Icons ... 446
14.3 ... Videos ... 450
14.4 ... Schriften ... 452
14.5 ... Textressourcen ... 453
14.6 ... Zusammenfassung ... 455
15. Den Nutzerkreis vergrößern: Localization und Accessibility ... 457
15.1 ... Localization ... 457
15.2 ... Accessibility ... 475
15.3 ... Zusammenfassung ... 486
16. Die Cloud: Unendliche Weiten ... 487
16.1 ... Daten mit GET beziehen ... 488
16.2 ... Ein eigener (HTTP-)Client ... 489
16.3 ... POST, PUT und PATCH ... 493
16.4 ... Delete ... 500
16.5 ... Mehr zu Requests ... 502
16.6 ... Das Package dio ... 505
16.7 ... JSON-Serialisierung und -Deserialisierung ... 512
16.8 ... Die Webview ... 517
16.9 ... Zusammenfassung ... 532
17. Persistieren: Caches und Datenbanken ... 533
17.1 ... shared_preferences ... 534
17.2 ... flutter_cache_manager ... 538
17.3 ... Datenbanken ... 542
17.4 ... NoSQL mit Hive CE ... 554
17.5 ... Eine wirklich nützliche Beispiel-App ... 556
17.6 ... Zusammenfassung ... 567
TEIL IV. Sensoren und Hardware ... 569
18. Mit der Außenwelt kommunizieren ... 571
18.1 ... Geräteinformationen ... 571
18.2 ... Bewegungssensoren und Batterie ... 573
18.3 ... Verbindungsdaten ... 574
18.4 ... Berechtigungen ... 575
18.5 ... Kamera und Fotobibliothek ... 576
18.6 ... Standortbestimmung ... 577
18.7 ... Zusammenfassung ... 579
19. Den Kanal wechseln: Channels zur Plattform ... 581
19.1 ... Method Channels ... 582
19.2 ... Foreign Function Interface (FFI) ... 588
19.3 ... Hybride Apps ... 592
TEIL V. Endgame ... 601
20. Analytics, Tests und Releases ... 603
20.1 ... Logging ... 603
20.2 ... Analytics ... 605
20.3 ... Debugging ... 605
20.4 ... Profiling ... 607
20.5 ... Testing ... 609
20.6 ... Releases ... 620
20.7 ... Zusammenfassung ... 624
Index ... 625
Materialien zum Buch ... 19
TEIL I. Einführung ... 21
1. Über dieses Buch ... 23
1.1 ... Was Sie in diesem Buch lernen werden ... 24
1.2 ... Null-Safety als Default-Einstellung ab Flutter 2.2 ... 26
1.3 ... Danksagung ... 26
2. Installation und die Wahl der IDE ... 27
2.1 ... Flutter herunterladen und installieren ... 27
2.2 ... Die Wahl der IDE ... 31
2.3 ... Die Flutter-Installation voll im Griff ... 36
3. Warum Sie mit Dart voll ins Schwarze treffen ... 39
3.1 ... Der Ursprung von Dart ... 40
3.2 ... Ein erstes Dart-Programm ... 41
3.3 ... Wichtige Begleiter ... 43
3.4 ... Variablen ... 44
3.5 ... Datentypen ... 48
3.6 ... Funktionen ... 66
3.7 ... Klassen, Mixins und Enums ... 77
3.8 ... Generika ... 108
3.9 ... Collections ... 111
3.10 ... Kontrollstrukturen ... 127
3.11 ... Exceptions und Errors ... 134
3.12 ... Asynchrone Programmierung ... 138
3.13 ... Die Library ... 147
3.14 ... Ein Projekt strukturieren ... 149
3.15 ... Code dokumentieren ... 150
3.16 ... Null-Safety ... 152
3.17 ... Zusammenfassung ... 156
4. Pubs: Abhängigkeiten komfortabel verwalten ... 159
4.1 ... Von der Library zum Package ... 159
4.2 ... Ein Meer aus pubs ... 160
4.3 ... Wo Licht ist, da fällt auch Schatten ... 160
4.4 ... Packages verwenden ... 162
4.5 ... Versionen ... 166
4.6 ... Der System-Cache ... 169
4.7 ... Der Build Runner ... 169
4.8 ... Zusammenfassung ... 170
TEIL II. Bedienoberflächen ... 171
5. Widgets ... 173
5.1 ... Ein erstes Widget ... 174
5.2 ... Stateful Widgets ... 182
5.3 ... Material Design und Cupertino Design ... 194
5.4 ... Vom Widget zum Rendering Object ... 197
5.5 ... Keys ... 201
5.6 ... Zusammenfassung ... 205
6. Layouting ... 207
6.1 ... Positionierung ... 207
6.2 ... Scroll-Widgets ... 231
6.3 ... Constraints, Höhen und Breiten ... 259
6.4 ... MediaQueryData ... 267
6.5 ... Overlay ... 273
6.6 ... Die Gerüste ... 283
6.7 ... Zusammenfassung ... 294
7. Navigation ... 295
7.1 ... Ein erster Sprung ... 295
7.2 ... Wenn Flutter nach dem Weg fragt: Named Routes ... 299
7.3 ... Eine Route austauschen ... 301
7.4 ... Routen entfernen ... 303
7.5 ... Großflächig aufräumen mit push und pop ... 304
7.6 ... NavigatorObserver ... 304
7.7 ... Daten austauschen ... 305
7.8 ... Den Android-Back-Button zähmen ... 308
7.9 ... Routen als URIs ... 309
7.10 ... Verschachtelte Navigator-Objekte ... 309
7.11 ... Navigator 2.0 ... 311
7.12 ... Zusammenfassung ... 329
8. Früchte am Baum: InheritedWidgets ... 331
8.1 ... Ein InheritedWidget ... 331
8.2 ... Das eigene InheritedWidget: TimeInfo ... 332
8.3 ... Zusammenfassung ... 335
9. BloCs: View Logic aus dem Weg räumen ... 337
9.1 ... Der BloC ... 337
9.2 ... BloC und ValueListenable ... 338
9.3 ... ChangeNotifier ... 342
9.4 ... Streams ... 345
9.5 ... Futures ... 352
9.6 ... Frische Pizza mit flutter_bloc ... 355
9.7 ... Zusammenfassung ... 358
10. Mit dem Nutzer interagieren ... 359
10.1 ... Button, TextField und Co ... 359
10.2 ... Wischen, Schieben und Ziehen ... 380
10.3 ... Dialogs und die Snackbar ... 387
11. Themes und Styles ... 395
11.1 ... BoxDecoration ... 395
11.2 ... Clipping ... 399
11.3 ... Text ... 403
11.4 ... ThemeData und CupertinoThemeData ... 406
11.5 ... Effekte durch Widgets ... 406
12. Animationen ... 411
12.1 ... Implizite Animationen ... 411
12.2 ... Tween-Animationen ... 416
12.3 ... Explizite Animationen ... 419
12.4 ... AnimatedWidget und der AnimatedBuilder ... 424
13. Arbeiten mit Canvas und Paint ... 429
13.1 ... CustomPaint und CustomPainter ... 429
13.2 ... Zusammenfassung ... 437
TEIL III. Assets und Medien ... 439
14. Assets und Medien ... 441
14.1 ... Bilder ... 441
14.2 ... Icons ... 446
14.3 ... Videos ... 450
14.4 ... Schriften ... 452
14.5 ... Textressourcen ... 453
14.6 ... Zusammenfassung ... 455
15. Den Nutzerkreis vergrößern: Localization und Accessibility ... 457
15.1 ... Localization ... 457
15.2 ... Accessibility ... 475
15.3 ... Zusammenfassung ... 486
16. Die Cloud: Unendliche Weiten ... 487
16.1 ... Daten mit GET beziehen ... 488
16.2 ... Ein eigener (HTTP-)Client ... 489
16.3 ... POST, PUT und PATCH ... 493
16.4 ... Delete ... 500
16.5 ... Mehr zu Requests ... 502
16.6 ... Das Package dio ... 505
16.7 ... JSON-Serialisierung und -Deserialisierung ... 512
16.8 ... Die Webview ... 517
16.9 ... Zusammenfassung ... 532
17. Persistieren: Caches und Datenbanken ... 533
17.1 ... shared_preferences ... 534
17.2 ... flutter_cache_manager ... 538
17.3 ... Datenbanken ... 542
17.4 ... NoSQL mit Hive CE ... 554
17.5 ... Eine wirklich nützliche Beispiel-App ... 556
17.6 ... Zusammenfassung ... 567
TEIL IV. Sensoren und Hardware ... 569
18. Mit der Außenwelt kommunizieren ... 571
18.1 ... Geräteinformationen ... 571
18.2 ... Bewegungssensoren und Batterie ... 573
18.3 ... Verbindungsdaten ... 574
18.4 ... Berechtigungen ... 575
18.5 ... Kamera und Fotobibliothek ... 576
18.6 ... Standortbestimmung ... 577
18.7 ... Zusammenfassung ... 579
19. Den Kanal wechseln: Channels zur Plattform ... 581
19.1 ... Method Channels ... 582
19.2 ... Foreign Function Interface (FFI) ... 588
19.3 ... Hybride Apps ... 592
TEIL V. Endgame ... 601
20. Analytics, Tests und Releases ... 603
20.1 ... Logging ... 603
20.2 ... Analytics ... 605
20.3 ... Debugging ... 605
20.4 ... Profiling ... 607
20.5 ... Testing ... 609
20.6 ... Releases ... 620
20.7 ... Zusammenfassung ... 624
Index ... 625
TEIL I. Einführung ... 21
1. Über dieses Buch ... 23
1.1 ... Was Sie in diesem Buch lernen werden ... 24
1.2 ... Null-Safety als Default-Einstellung ab Flutter 2.2 ... 26
1.3 ... Danksagung ... 26
2. Installation und die Wahl der IDE ... 27
2.1 ... Flutter herunterladen und installieren ... 27
2.2 ... Die Wahl der IDE ... 31
2.3 ... Die Flutter-Installation voll im Griff ... 36
3. Warum Sie mit Dart voll ins Schwarze treffen ... 39
3.1 ... Der Ursprung von Dart ... 40
3.2 ... Ein erstes Dart-Programm ... 41
3.3 ... Wichtige Begleiter ... 43
3.4 ... Variablen ... 44
3.5 ... Datentypen ... 48
3.6 ... Funktionen ... 66
3.7 ... Klassen, Mixins und Enums ... 77
3.8 ... Generika ... 108
3.9 ... Collections ... 111
3.10 ... Kontrollstrukturen ... 127
3.11 ... Exceptions und Errors ... 134
3.12 ... Asynchrone Programmierung ... 138
3.13 ... Die Library ... 147
3.14 ... Ein Projekt strukturieren ... 149
3.15 ... Code dokumentieren ... 150
3.16 ... Null-Safety ... 152
3.17 ... Zusammenfassung ... 156
4. Pubs: Abhängigkeiten komfortabel verwalten ... 159
4.1 ... Von der Library zum Package ... 159
4.2 ... Ein Meer aus pubs ... 160
4.3 ... Wo Licht ist, da fällt auch Schatten ... 160
4.4 ... Packages verwenden ... 162
4.5 ... Versionen ... 166
4.6 ... Der System-Cache ... 169
4.7 ... Der Build Runner ... 169
4.8 ... Zusammenfassung ... 170
TEIL II. Bedienoberflächen ... 171
5. Widgets ... 173
5.1 ... Ein erstes Widget ... 174
5.2 ... Stateful Widgets ... 182
5.3 ... Material Design und Cupertino Design ... 194
5.4 ... Vom Widget zum Rendering Object ... 197
5.5 ... Keys ... 201
5.6 ... Zusammenfassung ... 205
6. Layouting ... 207
6.1 ... Positionierung ... 207
6.2 ... Scroll-Widgets ... 231
6.3 ... Constraints, Höhen und Breiten ... 259
6.4 ... MediaQueryData ... 267
6.5 ... Overlay ... 273
6.6 ... Die Gerüste ... 283
6.7 ... Zusammenfassung ... 294
7. Navigation ... 295
7.1 ... Ein erster Sprung ... 295
7.2 ... Wenn Flutter nach dem Weg fragt: Named Routes ... 299
7.3 ... Eine Route austauschen ... 301
7.4 ... Routen entfernen ... 303
7.5 ... Großflächig aufräumen mit push und pop ... 304
7.6 ... NavigatorObserver ... 304
7.7 ... Daten austauschen ... 305
7.8 ... Den Android-Back-Button zähmen ... 308
7.9 ... Routen als URIs ... 309
7.10 ... Verschachtelte Navigator-Objekte ... 309
7.11 ... Navigator 2.0 ... 311
7.12 ... Zusammenfassung ... 329
8. Früchte am Baum: InheritedWidgets ... 331
8.1 ... Ein InheritedWidget ... 331
8.2 ... Das eigene InheritedWidget: TimeInfo ... 332
8.3 ... Zusammenfassung ... 335
9. BloCs: View Logic aus dem Weg räumen ... 337
9.1 ... Der BloC ... 337
9.2 ... BloC und ValueListenable ... 338
9.3 ... ChangeNotifier ... 342
9.4 ... Streams ... 345
9.5 ... Futures ... 352
9.6 ... Frische Pizza mit flutter_bloc ... 355
9.7 ... Zusammenfassung ... 358
10. Mit dem Nutzer interagieren ... 359
10.1 ... Button, TextField und Co ... 359
10.2 ... Wischen, Schieben und Ziehen ... 380
10.3 ... Dialogs und die Snackbar ... 387
11. Themes und Styles ... 395
11.1 ... BoxDecoration ... 395
11.2 ... Clipping ... 399
11.3 ... Text ... 403
11.4 ... ThemeData und CupertinoThemeData ... 406
11.5 ... Effekte durch Widgets ... 406
12. Animationen ... 411
12.1 ... Implizite Animationen ... 411
12.2 ... Tween-Animationen ... 416
12.3 ... Explizite Animationen ... 419
12.4 ... AnimatedWidget und der AnimatedBuilder ... 424
13. Arbeiten mit Canvas und Paint ... 429
13.1 ... CustomPaint und CustomPainter ... 429
13.2 ... Zusammenfassung ... 437
TEIL III. Assets und Medien ... 439
14. Assets und Medien ... 441
14.1 ... Bilder ... 441
14.2 ... Icons ... 446
14.3 ... Videos ... 450
14.4 ... Schriften ... 452
14.5 ... Textressourcen ... 453
14.6 ... Zusammenfassung ... 455
15. Den Nutzerkreis vergrößern: Localization und Accessibility ... 457
15.1 ... Localization ... 457
15.2 ... Accessibility ... 475
15.3 ... Zusammenfassung ... 486
16. Die Cloud: Unendliche Weiten ... 487
16.1 ... Daten mit GET beziehen ... 488
16.2 ... Ein eigener (HTTP-)Client ... 489
16.3 ... POST, PUT und PATCH ... 493
16.4 ... Delete ... 500
16.5 ... Mehr zu Requests ... 502
16.6 ... Das Package dio ... 505
16.7 ... JSON-Serialisierung und -Deserialisierung ... 512
16.8 ... Die Webview ... 517
16.9 ... Zusammenfassung ... 532
17. Persistieren: Caches und Datenbanken ... 533
17.1 ... shared_preferences ... 534
17.2 ... flutter_cache_manager ... 538
17.3 ... Datenbanken ... 542
17.4 ... NoSQL mit Hive CE ... 554
17.5 ... Eine wirklich nützliche Beispiel-App ... 556
17.6 ... Zusammenfassung ... 567
TEIL IV. Sensoren und Hardware ... 569
18. Mit der Außenwelt kommunizieren ... 571
18.1 ... Geräteinformationen ... 571
18.2 ... Bewegungssensoren und Batterie ... 573
18.3 ... Verbindungsdaten ... 574
18.4 ... Berechtigungen ... 575
18.5 ... Kamera und Fotobibliothek ... 576
18.6 ... Standortbestimmung ... 577
18.7 ... Zusammenfassung ... 579
19. Den Kanal wechseln: Channels zur Plattform ... 581
19.1 ... Method Channels ... 582
19.2 ... Foreign Function Interface (FFI) ... 588
19.3 ... Hybride Apps ... 592
TEIL V. Endgame ... 601
20. Analytics, Tests und Releases ... 603
20.1 ... Logging ... 603
20.2 ... Analytics ... 605
20.3 ... Debugging ... 605
20.4 ... Profiling ... 607
20.5 ... Testing ... 609
20.6 ... Releases ... 620
20.7 ... Zusammenfassung ... 624
Index ... 625