- 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 Produktivitätstools 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. Marc Marburger stellt Ihnen das Framework und die Sprache Dart mit all ihren Stärken vor, führt Sie in alle wichtigen Konzepte ein und vergisst dabei nicht, auf Fallstricke hinzuweisen. Mit vielen…mehr
Andere Kunden interessierten sich auch für
- Handbuch IT-Projektmanagement (eBook, ePUB)54,99 €
- Bernhard SteppanEinstieg in Java mit Eclipse29,99 €
- Marcus DeiningerFit für die Prüfung: Java6,90 €
- Christoph HöllerAngular39,90 €
- Oliver BaltesMaterialwirtschaft mit SAP S/4HANA79,90 €
- Angelika BeckPersonalabrechnung mit SAP89,90 €
- Denise Banks-GrasedyckSAP-S/4HANA-Projekte erfolgreich managen59,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 Produktivitätstools 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. Marc Marburger stellt Ihnen das Framework und die Sprache Dart mit all ihren Stärken vor, führt Sie in alle wichtigen Konzepte ein und vergisst dabei nicht, auf Fallstricke hinzuweisen. Mit vielen Beispielen, konkreten Praxistipps und Sinn für die wichtigen Details.
Aus dem Inhalt:
Installation und WerkzeugeWidgets, Themes und StylesFeatures: Null-Safety, Navigation 2.0 u. v. m.Hot Reload und effiziente WorkflowsFlutter ModulesPerformance und Best PracticesNative C-SchnittstellenUnit- und Widget-TestsLogging und AnalyticsCloud-Schnittstellen am praktischen Beispiel
Aus dem Inhalt:
Installation und WerkzeugeWidgets, Themes und StylesFeatures: Null-Safety, Navigation 2.0 u. v. m.Hot Reload und effiziente WorkflowsFlutter ModulesPerformance und Best PracticesNative C-SchnittstellenUnit- und Widget-TestsLogging und AnalyticsCloud-Schnittstellen am praktischen Beispiel
Produktdetails
- Produktdetails
- Rheinwerk Computing
- Verlag: Rheinwerk Computing / Rheinwerk Verlag
- Artikelnr. des Verlages: 459/08146
- Seitenzahl: 651
- Erscheinungstermin: August 2021
- Deutsch
- Abmessung: 243mm x 186mm x 42mm
- Gewicht: 1333g
- ISBN-13: 9783836281461
- ISBN-10: 3836281465
- Artikelnr.: 61280195
- Herstellerkennzeichnung
- Rheinwerk Publishing Inc.
- 2 Heritage Drive
- 11201 Quincy, MA, US
- Info@rheinwerk-verlag.de
- www.rheinwerk-verlag.de
- Rheinwerk Computing
- Verlag: Rheinwerk Computing / Rheinwerk Verlag
- Artikelnr. des Verlages: 459/08146
- Seitenzahl: 651
- Erscheinungstermin: August 2021
- Deutsch
- Abmessung: 243mm x 186mm x 42mm
- Gewicht: 1333g
- ISBN-13: 9783836281461
- ISBN-10: 3836281465
- Artikelnr.: 61280195
- Herstellerkennzeichnung
- Rheinwerk Publishing Inc.
- 2 Heritage Drive
- 11201 Quincy, MA, US
- Info@rheinwerk-verlag.de
- www.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, von C# auf der Windows-Plattform über Xamarin kommend liegt sein Fokus nun auf Dart und Flutter, die er täglich als freiberuflicher Softwareentwickler in Kundenprojekten einsetzt.
Materialien zum Buch ... 18
TEIL I. Einführung ... 19
1. Über dieses Buch ... 21
1.1 ... Was Sie in diesem Buch lernen werden ... 22
1.2 ... Null-Safety als Default-Einstellung ab Flutter 2.2 ... 23
1.3 ... Danksagung ... 24
2. Installation und die Wahl der IDE ... 25
2.1 ... Flutter herunterladen und installieren ... 25
2.2 ... Die Wahl der IDE ... 29
2.3 ... Die Flutter-Installation voll im Griff ... 35
3. Warum man mit Dart voll ins Schwarze trifft ... 37
3.1 ... Der Ursprung von Dart ... 37
3.2 ... Ein erstes Dart-Programm ... 39
3.3 ... Wichtige Begleiter ... 41
3.4 ... Variablen ... 42
3.5 ... Datentypen ... 47
3.6 ... Funktionen ... 65
3.7 ... Klassen, Mixins und Enums ... 79
3.8 ... Generika ... 112
3.9 ... Collections ... 116
3.10 ... Kontrollstrukturen ... 133
3.11 ... Exceptions und Errors ... 141
3.12 ... Asynchrone Programmierung ... 145
3.13 ... Die Library ... 155
3.14 ... Struktur eines Projekts ... 157
3.15 ... Dokumentation des Codes ... 159
3.16 ... Null-Safety ... 160
3.17 ... Zusammenfassung ... 169
4. Pubs: Abhängigkeiten komfortabel verwalten ... 171
4.1 ... Von der Library zum Package ... 171
4.2 ... Ein Meer aus pubs ... 172
4.3 ... Wo Licht ist, da fällt auch Schatten ... 172
4.4 ... Packages verwenden ... 173
4.5 ... Versionen ... 177
4.6 ... Der System Cache ... 180
4.7 ... Der Build Runner ... 181
4.8 ... Zusammenfassung ... 181
TEIL II. Bedienoberflächen ... 183
5. Widgets ... 185
5.1 ... Ein erstes Widget ... 186
5.2 ... Stateful Widgets ... 197
5.3 ... Material Design und Cupertino Design ... 214
5.4 ... Vom Widget zum Rendering Object ... 218
5.5 ... Keys ... 221
5.6 ... Zusammenfassung ... 227
6. Layouting ... 229
6.1 ... Positionierung ... 229
6.2 ... Scroll-Widgets ... 254
6.3 ... Constraints, Höhen und Breiten ... 283
6.4 ... MediaQueryData ... 292
6.5 ... Overlay ... 297
6.6 ... Die Gerüste ... 307
6.7 ... Zusammenfassung ... 318
7. Navigation ... 319
7.1 ... Ein erster Sprung ... 319
7.2 ... Wenn Flutter nach dem Weg fragt: Named Routes ... 323
7.3 ... Eine Route austauschen ... 325
7.4 ... Routen entfernen ... 327
7.5 ... Großflächig aufräumen mit push und pop ... 328
7.6 ... NavigatorObserver ... 328
7.7 ... Daten austauschen ... 330
7.8 ... Den Android-Back-Button zähmen ... 333
7.9 ... Routen als URIs ... 334
7.10 ... Verschachtelte Navigator-Objekte ... 334
7.11 ... Navigator 2.0 ... 336
7.12 ... Zusammenfassung ... 355
8. Früchte am Baum: InheritedWidgets ... 357
8.1 ... Ein InheritedWidget ... 357
8.2 ... Das eigene InheritedWidget: TimeInfo ... 358
8.3 ... Zusammenfassung ... 361
9. BloCs: View Logic aus dem Weg räumen ... 363
9.1 ... Der BloC ... 363
9.2 ... BloC und ValueListenable ... 364
9.3 ... ChangeNotifier ... 368
9.4 ... Streams ... 371
9.5 ... Futures ... 379
10. Mit dem Nutzer interagieren ... 383
10.1 ... Button, TextField und Co ... 383
10.2 ... Wischen, Schieben und Ziehen ... 405
10.3 ... Dialogs und die Snackbar ... 413
11. Themes und Styles ... 419
11.1 ... BoxDecoration ... 419
11.2 ... Clipping ... 423
11.3 ... Text ... 427
11.4 ... ThemeData und CupertinoThemeData ... 430
11.5 ... Effekte durch Widgets ... 431
12. Animationen ... 435
12.1 ... Implizite Animationen ... 435
12.2 ... Tween-Animationen ... 440
12.3 ... Explizite Animationen ... 443
12.4 ... AnimatedWidget und der AnimatedBuilder ... 448
13. Arbeiten mit Canvas und Paint ... 453
13.1 ... CustomPaint und CustomPainter ... 453
13.2 ... Zusammenfassung ... 461
TEIL III. Inhalte und Accessibility ... 463
14. Assets und Medien ... 465
14.1 ... Bilder ... 465
14.2 ... Icons ... 471
14.3 ... Videos ... 474
14.4 ... Schriften ... 474
14.5 ... Textressourcen ... 476
15. Den Nutzerkreis vergrößern: Localization und Accessibility ... 479
15.1 ... Localization ... 479
15.2 ... Accessibility ... 500
15.3 ... Zusammenfassung ... 511
16. Die Cloud: Unendliche Weiten ... 513
16.1 ... Daten mit GET beziehen ... 514
16.2 ... Ein eigener (HTTP-)Client ... 515
16.3 ... POST, PUT und PATCH ... 519
16.4 ... Delete ... 527
16.5 ... Mehr zu Requests ... 528
16.6 ... Das Package dio ... 531
16.7 ... JSON-Serialisierung und -Deserialisierung ... 539
16.8 ... Die Webview ... 544
16.9 ... Zusammenfassung ... 563
17. Persistieren: Caches und Datenbanken ... 565
17.1 ... shared_preferences ... 565
17.2 ... flutter_cache_manager ... 569
17.3 ... Datenbanken ... 574
17.4 ... Zusammenfassung ... 587
TEIL IV. Sensoren und Hardware ... 589
18. Mit der Außenwelt kommunizieren ... 591
18.1 ... Geräteinformationen ... 591
18.2 ... Bewegungssensoren und Batterie ... 593
18.3 ... Verbindungsdaten ... 595
18.4 ... Berechtigungen ... 595
18.5 ... Kamera und Fotobibliothek ... 597
18.6 ... Standortbestimmung ... 598
18.7 ... Zusammenfassung ... 599
19. Den Kanal wechseln: Channels zur Plattform ... 601
19.1 ... Method Channels ... 602
19.2 ... Foreign Function Interface (FFI) ... 608
19.3 ... Hybride Apps ... 612
TEIL V. Endgame ... 621
20. Analytics, Tests und Releases ... 623
20.1 ... Logging ... 623
20.2 ... Analytics ... 625
20.3 ... Debugging ... 625
20.4 ... Profiling ... 628
20.5 ... Testing ... 629
20.6 ... Releases ... 640
Index ... 645
TEIL I. Einführung ... 19
1. Über dieses Buch ... 21
1.1 ... Was Sie in diesem Buch lernen werden ... 22
1.2 ... Null-Safety als Default-Einstellung ab Flutter 2.2 ... 23
1.3 ... Danksagung ... 24
2. Installation und die Wahl der IDE ... 25
2.1 ... Flutter herunterladen und installieren ... 25
2.2 ... Die Wahl der IDE ... 29
2.3 ... Die Flutter-Installation voll im Griff ... 35
3. Warum man mit Dart voll ins Schwarze trifft ... 37
3.1 ... Der Ursprung von Dart ... 37
3.2 ... Ein erstes Dart-Programm ... 39
3.3 ... Wichtige Begleiter ... 41
3.4 ... Variablen ... 42
3.5 ... Datentypen ... 47
3.6 ... Funktionen ... 65
3.7 ... Klassen, Mixins und Enums ... 79
3.8 ... Generika ... 112
3.9 ... Collections ... 116
3.10 ... Kontrollstrukturen ... 133
3.11 ... Exceptions und Errors ... 141
3.12 ... Asynchrone Programmierung ... 145
3.13 ... Die Library ... 155
3.14 ... Struktur eines Projekts ... 157
3.15 ... Dokumentation des Codes ... 159
3.16 ... Null-Safety ... 160
3.17 ... Zusammenfassung ... 169
4. Pubs: Abhängigkeiten komfortabel verwalten ... 171
4.1 ... Von der Library zum Package ... 171
4.2 ... Ein Meer aus pubs ... 172
4.3 ... Wo Licht ist, da fällt auch Schatten ... 172
4.4 ... Packages verwenden ... 173
4.5 ... Versionen ... 177
4.6 ... Der System Cache ... 180
4.7 ... Der Build Runner ... 181
4.8 ... Zusammenfassung ... 181
TEIL II. Bedienoberflächen ... 183
5. Widgets ... 185
5.1 ... Ein erstes Widget ... 186
5.2 ... Stateful Widgets ... 197
5.3 ... Material Design und Cupertino Design ... 214
5.4 ... Vom Widget zum Rendering Object ... 218
5.5 ... Keys ... 221
5.6 ... Zusammenfassung ... 227
6. Layouting ... 229
6.1 ... Positionierung ... 229
6.2 ... Scroll-Widgets ... 254
6.3 ... Constraints, Höhen und Breiten ... 283
6.4 ... MediaQueryData ... 292
6.5 ... Overlay ... 297
6.6 ... Die Gerüste ... 307
6.7 ... Zusammenfassung ... 318
7. Navigation ... 319
7.1 ... Ein erster Sprung ... 319
7.2 ... Wenn Flutter nach dem Weg fragt: Named Routes ... 323
7.3 ... Eine Route austauschen ... 325
7.4 ... Routen entfernen ... 327
7.5 ... Großflächig aufräumen mit push und pop ... 328
7.6 ... NavigatorObserver ... 328
7.7 ... Daten austauschen ... 330
7.8 ... Den Android-Back-Button zähmen ... 333
7.9 ... Routen als URIs ... 334
7.10 ... Verschachtelte Navigator-Objekte ... 334
7.11 ... Navigator 2.0 ... 336
7.12 ... Zusammenfassung ... 355
8. Früchte am Baum: InheritedWidgets ... 357
8.1 ... Ein InheritedWidget ... 357
8.2 ... Das eigene InheritedWidget: TimeInfo ... 358
8.3 ... Zusammenfassung ... 361
9. BloCs: View Logic aus dem Weg räumen ... 363
9.1 ... Der BloC ... 363
9.2 ... BloC und ValueListenable ... 364
9.3 ... ChangeNotifier ... 368
9.4 ... Streams ... 371
9.5 ... Futures ... 379
10. Mit dem Nutzer interagieren ... 383
10.1 ... Button, TextField und Co ... 383
10.2 ... Wischen, Schieben und Ziehen ... 405
10.3 ... Dialogs und die Snackbar ... 413
11. Themes und Styles ... 419
11.1 ... BoxDecoration ... 419
11.2 ... Clipping ... 423
11.3 ... Text ... 427
11.4 ... ThemeData und CupertinoThemeData ... 430
11.5 ... Effekte durch Widgets ... 431
12. Animationen ... 435
12.1 ... Implizite Animationen ... 435
12.2 ... Tween-Animationen ... 440
12.3 ... Explizite Animationen ... 443
12.4 ... AnimatedWidget und der AnimatedBuilder ... 448
13. Arbeiten mit Canvas und Paint ... 453
13.1 ... CustomPaint und CustomPainter ... 453
13.2 ... Zusammenfassung ... 461
TEIL III. Inhalte und Accessibility ... 463
14. Assets und Medien ... 465
14.1 ... Bilder ... 465
14.2 ... Icons ... 471
14.3 ... Videos ... 474
14.4 ... Schriften ... 474
14.5 ... Textressourcen ... 476
15. Den Nutzerkreis vergrößern: Localization und Accessibility ... 479
15.1 ... Localization ... 479
15.2 ... Accessibility ... 500
15.3 ... Zusammenfassung ... 511
16. Die Cloud: Unendliche Weiten ... 513
16.1 ... Daten mit GET beziehen ... 514
16.2 ... Ein eigener (HTTP-)Client ... 515
16.3 ... POST, PUT und PATCH ... 519
16.4 ... Delete ... 527
16.5 ... Mehr zu Requests ... 528
16.6 ... Das Package dio ... 531
16.7 ... JSON-Serialisierung und -Deserialisierung ... 539
16.8 ... Die Webview ... 544
16.9 ... Zusammenfassung ... 563
17. Persistieren: Caches und Datenbanken ... 565
17.1 ... shared_preferences ... 565
17.2 ... flutter_cache_manager ... 569
17.3 ... Datenbanken ... 574
17.4 ... Zusammenfassung ... 587
TEIL IV. Sensoren und Hardware ... 589
18. Mit der Außenwelt kommunizieren ... 591
18.1 ... Geräteinformationen ... 591
18.2 ... Bewegungssensoren und Batterie ... 593
18.3 ... Verbindungsdaten ... 595
18.4 ... Berechtigungen ... 595
18.5 ... Kamera und Fotobibliothek ... 597
18.6 ... Standortbestimmung ... 598
18.7 ... Zusammenfassung ... 599
19. Den Kanal wechseln: Channels zur Plattform ... 601
19.1 ... Method Channels ... 602
19.2 ... Foreign Function Interface (FFI) ... 608
19.3 ... Hybride Apps ... 612
TEIL V. Endgame ... 621
20. Analytics, Tests und Releases ... 623
20.1 ... Logging ... 623
20.2 ... Analytics ... 625
20.3 ... Debugging ... 625
20.4 ... Profiling ... 628
20.5 ... Testing ... 629
20.6 ... Releases ... 640
Index ... 645
Materialien zum Buch ... 18
TEIL I. Einführung ... 19
1. Über dieses Buch ... 21
1.1 ... Was Sie in diesem Buch lernen werden ... 22
1.2 ... Null-Safety als Default-Einstellung ab Flutter 2.2 ... 23
1.3 ... Danksagung ... 24
2. Installation und die Wahl der IDE ... 25
2.1 ... Flutter herunterladen und installieren ... 25
2.2 ... Die Wahl der IDE ... 29
2.3 ... Die Flutter-Installation voll im Griff ... 35
3. Warum man mit Dart voll ins Schwarze trifft ... 37
3.1 ... Der Ursprung von Dart ... 37
3.2 ... Ein erstes Dart-Programm ... 39
3.3 ... Wichtige Begleiter ... 41
3.4 ... Variablen ... 42
3.5 ... Datentypen ... 47
3.6 ... Funktionen ... 65
3.7 ... Klassen, Mixins und Enums ... 79
3.8 ... Generika ... 112
3.9 ... Collections ... 116
3.10 ... Kontrollstrukturen ... 133
3.11 ... Exceptions und Errors ... 141
3.12 ... Asynchrone Programmierung ... 145
3.13 ... Die Library ... 155
3.14 ... Struktur eines Projekts ... 157
3.15 ... Dokumentation des Codes ... 159
3.16 ... Null-Safety ... 160
3.17 ... Zusammenfassung ... 169
4. Pubs: Abhängigkeiten komfortabel verwalten ... 171
4.1 ... Von der Library zum Package ... 171
4.2 ... Ein Meer aus pubs ... 172
4.3 ... Wo Licht ist, da fällt auch Schatten ... 172
4.4 ... Packages verwenden ... 173
4.5 ... Versionen ... 177
4.6 ... Der System Cache ... 180
4.7 ... Der Build Runner ... 181
4.8 ... Zusammenfassung ... 181
TEIL II. Bedienoberflächen ... 183
5. Widgets ... 185
5.1 ... Ein erstes Widget ... 186
5.2 ... Stateful Widgets ... 197
5.3 ... Material Design und Cupertino Design ... 214
5.4 ... Vom Widget zum Rendering Object ... 218
5.5 ... Keys ... 221
5.6 ... Zusammenfassung ... 227
6. Layouting ... 229
6.1 ... Positionierung ... 229
6.2 ... Scroll-Widgets ... 254
6.3 ... Constraints, Höhen und Breiten ... 283
6.4 ... MediaQueryData ... 292
6.5 ... Overlay ... 297
6.6 ... Die Gerüste ... 307
6.7 ... Zusammenfassung ... 318
7. Navigation ... 319
7.1 ... Ein erster Sprung ... 319
7.2 ... Wenn Flutter nach dem Weg fragt: Named Routes ... 323
7.3 ... Eine Route austauschen ... 325
7.4 ... Routen entfernen ... 327
7.5 ... Großflächig aufräumen mit push und pop ... 328
7.6 ... NavigatorObserver ... 328
7.7 ... Daten austauschen ... 330
7.8 ... Den Android-Back-Button zähmen ... 333
7.9 ... Routen als URIs ... 334
7.10 ... Verschachtelte Navigator-Objekte ... 334
7.11 ... Navigator 2.0 ... 336
7.12 ... Zusammenfassung ... 355
8. Früchte am Baum: InheritedWidgets ... 357
8.1 ... Ein InheritedWidget ... 357
8.2 ... Das eigene InheritedWidget: TimeInfo ... 358
8.3 ... Zusammenfassung ... 361
9. BloCs: View Logic aus dem Weg räumen ... 363
9.1 ... Der BloC ... 363
9.2 ... BloC und ValueListenable ... 364
9.3 ... ChangeNotifier ... 368
9.4 ... Streams ... 371
9.5 ... Futures ... 379
10. Mit dem Nutzer interagieren ... 383
10.1 ... Button, TextField und Co ... 383
10.2 ... Wischen, Schieben und Ziehen ... 405
10.3 ... Dialogs und die Snackbar ... 413
11. Themes und Styles ... 419
11.1 ... BoxDecoration ... 419
11.2 ... Clipping ... 423
11.3 ... Text ... 427
11.4 ... ThemeData und CupertinoThemeData ... 430
11.5 ... Effekte durch Widgets ... 431
12. Animationen ... 435
12.1 ... Implizite Animationen ... 435
12.2 ... Tween-Animationen ... 440
12.3 ... Explizite Animationen ... 443
12.4 ... AnimatedWidget und der AnimatedBuilder ... 448
13. Arbeiten mit Canvas und Paint ... 453
13.1 ... CustomPaint und CustomPainter ... 453
13.2 ... Zusammenfassung ... 461
TEIL III. Inhalte und Accessibility ... 463
14. Assets und Medien ... 465
14.1 ... Bilder ... 465
14.2 ... Icons ... 471
14.3 ... Videos ... 474
14.4 ... Schriften ... 474
14.5 ... Textressourcen ... 476
15. Den Nutzerkreis vergrößern: Localization und Accessibility ... 479
15.1 ... Localization ... 479
15.2 ... Accessibility ... 500
15.3 ... Zusammenfassung ... 511
16. Die Cloud: Unendliche Weiten ... 513
16.1 ... Daten mit GET beziehen ... 514
16.2 ... Ein eigener (HTTP-)Client ... 515
16.3 ... POST, PUT und PATCH ... 519
16.4 ... Delete ... 527
16.5 ... Mehr zu Requests ... 528
16.6 ... Das Package dio ... 531
16.7 ... JSON-Serialisierung und -Deserialisierung ... 539
16.8 ... Die Webview ... 544
16.9 ... Zusammenfassung ... 563
17. Persistieren: Caches und Datenbanken ... 565
17.1 ... shared_preferences ... 565
17.2 ... flutter_cache_manager ... 569
17.3 ... Datenbanken ... 574
17.4 ... Zusammenfassung ... 587
TEIL IV. Sensoren und Hardware ... 589
18. Mit der Außenwelt kommunizieren ... 591
18.1 ... Geräteinformationen ... 591
18.2 ... Bewegungssensoren und Batterie ... 593
18.3 ... Verbindungsdaten ... 595
18.4 ... Berechtigungen ... 595
18.5 ... Kamera und Fotobibliothek ... 597
18.6 ... Standortbestimmung ... 598
18.7 ... Zusammenfassung ... 599
19. Den Kanal wechseln: Channels zur Plattform ... 601
19.1 ... Method Channels ... 602
19.2 ... Foreign Function Interface (FFI) ... 608
19.3 ... Hybride Apps ... 612
TEIL V. Endgame ... 621
20. Analytics, Tests und Releases ... 623
20.1 ... Logging ... 623
20.2 ... Analytics ... 625
20.3 ... Debugging ... 625
20.4 ... Profiling ... 628
20.5 ... Testing ... 629
20.6 ... Releases ... 640
Index ... 645
TEIL I. Einführung ... 19
1. Über dieses Buch ... 21
1.1 ... Was Sie in diesem Buch lernen werden ... 22
1.2 ... Null-Safety als Default-Einstellung ab Flutter 2.2 ... 23
1.3 ... Danksagung ... 24
2. Installation und die Wahl der IDE ... 25
2.1 ... Flutter herunterladen und installieren ... 25
2.2 ... Die Wahl der IDE ... 29
2.3 ... Die Flutter-Installation voll im Griff ... 35
3. Warum man mit Dart voll ins Schwarze trifft ... 37
3.1 ... Der Ursprung von Dart ... 37
3.2 ... Ein erstes Dart-Programm ... 39
3.3 ... Wichtige Begleiter ... 41
3.4 ... Variablen ... 42
3.5 ... Datentypen ... 47
3.6 ... Funktionen ... 65
3.7 ... Klassen, Mixins und Enums ... 79
3.8 ... Generika ... 112
3.9 ... Collections ... 116
3.10 ... Kontrollstrukturen ... 133
3.11 ... Exceptions und Errors ... 141
3.12 ... Asynchrone Programmierung ... 145
3.13 ... Die Library ... 155
3.14 ... Struktur eines Projekts ... 157
3.15 ... Dokumentation des Codes ... 159
3.16 ... Null-Safety ... 160
3.17 ... Zusammenfassung ... 169
4. Pubs: Abhängigkeiten komfortabel verwalten ... 171
4.1 ... Von der Library zum Package ... 171
4.2 ... Ein Meer aus pubs ... 172
4.3 ... Wo Licht ist, da fällt auch Schatten ... 172
4.4 ... Packages verwenden ... 173
4.5 ... Versionen ... 177
4.6 ... Der System Cache ... 180
4.7 ... Der Build Runner ... 181
4.8 ... Zusammenfassung ... 181
TEIL II. Bedienoberflächen ... 183
5. Widgets ... 185
5.1 ... Ein erstes Widget ... 186
5.2 ... Stateful Widgets ... 197
5.3 ... Material Design und Cupertino Design ... 214
5.4 ... Vom Widget zum Rendering Object ... 218
5.5 ... Keys ... 221
5.6 ... Zusammenfassung ... 227
6. Layouting ... 229
6.1 ... Positionierung ... 229
6.2 ... Scroll-Widgets ... 254
6.3 ... Constraints, Höhen und Breiten ... 283
6.4 ... MediaQueryData ... 292
6.5 ... Overlay ... 297
6.6 ... Die Gerüste ... 307
6.7 ... Zusammenfassung ... 318
7. Navigation ... 319
7.1 ... Ein erster Sprung ... 319
7.2 ... Wenn Flutter nach dem Weg fragt: Named Routes ... 323
7.3 ... Eine Route austauschen ... 325
7.4 ... Routen entfernen ... 327
7.5 ... Großflächig aufräumen mit push und pop ... 328
7.6 ... NavigatorObserver ... 328
7.7 ... Daten austauschen ... 330
7.8 ... Den Android-Back-Button zähmen ... 333
7.9 ... Routen als URIs ... 334
7.10 ... Verschachtelte Navigator-Objekte ... 334
7.11 ... Navigator 2.0 ... 336
7.12 ... Zusammenfassung ... 355
8. Früchte am Baum: InheritedWidgets ... 357
8.1 ... Ein InheritedWidget ... 357
8.2 ... Das eigene InheritedWidget: TimeInfo ... 358
8.3 ... Zusammenfassung ... 361
9. BloCs: View Logic aus dem Weg räumen ... 363
9.1 ... Der BloC ... 363
9.2 ... BloC und ValueListenable ... 364
9.3 ... ChangeNotifier ... 368
9.4 ... Streams ... 371
9.5 ... Futures ... 379
10. Mit dem Nutzer interagieren ... 383
10.1 ... Button, TextField und Co ... 383
10.2 ... Wischen, Schieben und Ziehen ... 405
10.3 ... Dialogs und die Snackbar ... 413
11. Themes und Styles ... 419
11.1 ... BoxDecoration ... 419
11.2 ... Clipping ... 423
11.3 ... Text ... 427
11.4 ... ThemeData und CupertinoThemeData ... 430
11.5 ... Effekte durch Widgets ... 431
12. Animationen ... 435
12.1 ... Implizite Animationen ... 435
12.2 ... Tween-Animationen ... 440
12.3 ... Explizite Animationen ... 443
12.4 ... AnimatedWidget und der AnimatedBuilder ... 448
13. Arbeiten mit Canvas und Paint ... 453
13.1 ... CustomPaint und CustomPainter ... 453
13.2 ... Zusammenfassung ... 461
TEIL III. Inhalte und Accessibility ... 463
14. Assets und Medien ... 465
14.1 ... Bilder ... 465
14.2 ... Icons ... 471
14.3 ... Videos ... 474
14.4 ... Schriften ... 474
14.5 ... Textressourcen ... 476
15. Den Nutzerkreis vergrößern: Localization und Accessibility ... 479
15.1 ... Localization ... 479
15.2 ... Accessibility ... 500
15.3 ... Zusammenfassung ... 511
16. Die Cloud: Unendliche Weiten ... 513
16.1 ... Daten mit GET beziehen ... 514
16.2 ... Ein eigener (HTTP-)Client ... 515
16.3 ... POST, PUT und PATCH ... 519
16.4 ... Delete ... 527
16.5 ... Mehr zu Requests ... 528
16.6 ... Das Package dio ... 531
16.7 ... JSON-Serialisierung und -Deserialisierung ... 539
16.8 ... Die Webview ... 544
16.9 ... Zusammenfassung ... 563
17. Persistieren: Caches und Datenbanken ... 565
17.1 ... shared_preferences ... 565
17.2 ... flutter_cache_manager ... 569
17.3 ... Datenbanken ... 574
17.4 ... Zusammenfassung ... 587
TEIL IV. Sensoren und Hardware ... 589
18. Mit der Außenwelt kommunizieren ... 591
18.1 ... Geräteinformationen ... 591
18.2 ... Bewegungssensoren und Batterie ... 593
18.3 ... Verbindungsdaten ... 595
18.4 ... Berechtigungen ... 595
18.5 ... Kamera und Fotobibliothek ... 597
18.6 ... Standortbestimmung ... 598
18.7 ... Zusammenfassung ... 599
19. Den Kanal wechseln: Channels zur Plattform ... 601
19.1 ... Method Channels ... 602
19.2 ... Foreign Function Interface (FFI) ... 608
19.3 ... Hybride Apps ... 612
TEIL V. Endgame ... 621
20. Analytics, Tests und Releases ... 623
20.1 ... Logging ... 623
20.2 ... Analytics ... 625
20.3 ... Debugging ... 625
20.4 ... Profiling ... 628
20.5 ... Testing ... 629
20.6 ... Releases ... 640
Index ... 645