Payne | Beginning App Development with Flutter | E-Book | www.sack.de
E-Book

E-Book, Englisch, 322 Seiten

Payne Beginning App Development with Flutter

Create Cross-Platform Mobile Apps
1. ed
ISBN: 978-1-4842-5181-2
Verlag: Apress
Format: PDF
Kopierschutz: 1 - PDF Watermark

Create Cross-Platform Mobile Apps

E-Book, Englisch, 322 Seiten

ISBN: 978-1-4842-5181-2
Verlag: Apress
Format: PDF
Kopierschutz: 1 - PDF Watermark



Create iOS and Android apps with Flutter using just one codebase.  App development on multiple platforms has historically been difficult and complex. This book breaks down complex concepts and tasks into easily digestible segments with examples, pictures, and hands-on labs with starters and solutions. In doing so, you'll develop a basic understanding of the Dart programming language; the entire Flutter development toolchain; the differences between stateful and stateless widgets; and a working knowledge of the architecture of apps. All the most important parts of app development with Flutter are covered in this book. Work with themes and styles. Develop custom widgets. Teach your app to respond to gestures like taps, swipes, and pinches. Design, create and control the layout of your app. Create tools to handle form data entry from users. And ultimately create killer multiscreen apps with navigation, menus, and tabs.Flutter is Google's new framework for creating mobile apps that run on iOS and Android phones both.You had to be a super-developer to write apps for iOS or Android alone. But writing for both? Forget about it! You had to be familiar with Swift, Java/Kotlin, Xcode, Eclipse, and a bunch of other technologies simultaneously. Beginning App Development with Flutter simplifies the entire process.
What You'll Learn
Get the most out of great Flutter widgets Create custom widgets, both stateless and statefulExercise expert control over your Flutter layoutsMake your app respond to gestures like swiping, pinching and tappingInitiate async Ajax calls to RESTful APIs - including Google Firebase!
Who This Book Is ForDevelopers who have coded in Java, C#, C++, or any similar language. It brings app development within the reach of younger developers, so STEM groups are likely to pick up the technology. Managers, product owners, and business analysts need to understand Flutter's capabilities. 


Rap Payne has focused on mobile development since he started Agile Gadgets, a mobile app development company in 2003. He is a consultant, trainer, and entrepreneur who has written apps, mentored developers, and taught software development classes for Fortune 500 companies like Boeing, Walmart, Coca-Cola, Wells Fargo, Honda,CVS, GE, Chase, HP, Lockheed, Exxon-Mobil, Lowe's, Nike, J.C. Penney, USAA, Walgreen's, and government agencies like the US Air Force, Navy, Army, NASA, Britain's GCHQ, Canada's postal service, and several provincial governments, to name a few.As a professional mentor and trainer, Rap has developed a talent for communicating highly complex ideas in easy-to-understand ways. And as a real-world developer, he understands the need to teach these topics using practical and realistic examples and exercises.

Payne Beginning App Development with Flutter jetzt bestellen!

Autoren/Hrsg.


Weitere Infos & Material


1;Praise for Beginning AppDevelopment with Flutter;5
2;Table of Contents;7
3;About the Author;16
4;About the Technical Reviewer;17
5;Who is this book for?;18
6;Part I: Introduction to Flutter;23
6.1;Chapter 1: Hello Flutter;24
6.1.1;What is Flutter?;25
6.1.2;Why Flutter?;26
6.1.3;The other options;26
6.1.4;Native solutions;28
6.1.5;Conclusion;29
6.2;Chapter 2: Developing in Flutter;30
6.2.1;The Flutter toolchain;31
6.2.1.1;The Flutter SDK;31
6.2.1.1.1;Installing the flutter SDK;31
6.2.1.2;IDEs;31
6.2.1.2.1;VS Code from Microsoft;32
6.2.1.2.2;Android Studio/IntelliJ from JetBrains;32
6.2.1.2.3;Which IDE should I use?;32
6.2.1.3;IDE DevTools;33
6.2.1.4;Emulators;34
6.2.1.4.1;iOS simulator;34
6.2.1.4.2;Android emulator;35
6.2.1.5;Keeping the tools up to date;36
6.2.1.5.1;flutter doctor;37
6.2.1.5.2;flutter upgrade;38
6.2.2;The Flutter development process;39
6.2.2.1;Scaffolding the app and files;39
6.2.2.1.1;Anatomy of a Flutter project;40
6.2.2.2;Running your app;42
6.2.2.2.1;Running it as a web app;44
6.2.2.2.2;Running it on a tethered device;45
6.2.2.2.3;Hot reloading;45
6.2.2.2.4;Debugging;46
6.2.3;Conclusion;48
7;Part II: Foundational Flutter;49
7.1;Chapter 3: Everything Is Widgets;50
7.1.1;UI as code;52
7.1.2;Built-in Flutter widgets;54
7.1.3;Value widgets;55
7.1.4;Layout widgets;55
7.1.5;Navigation widgets;56
7.1.6;Other widgets;57
7.1.7;How to create your own stateless widgets;57
7.1.7.1;Widgets have keys;60
7.1.7.2;Passing a value into your widget;61
7.1.8;Stateless and Stateful widgets;64
7.1.8.1;So which one should I create?;64
7.1.9;Conclusion;65
7.2;Chapter 4: Value Widgets;66
7.2.1;The Text widget;66
7.2.2;The Icon widget;67
7.2.3;The Image widget;68
7.2.3.1;Embedded images;69
7.2.3.2;Network images;70
7.2.3.3;Sizing an image;70
7.2.4;Input widgets;73
7.2.4.1;Text fields;74
7.2.4.1.1;Making your TextField fancy;75
7.2.4.1.2;Checkboxes;79
7.2.4.1.3;Radio buttons;80
7.2.4.1.4;Sliders;81
7.2.4.1.5;Dropdowns;82
7.2.4.2;Putting the form widgets together;84
7.2.4.3;Form widget;84
7.2.4.4;FormField widget;86
7.2.4.4.1;onSaved;88
7.2.4.4.2;validator;88
7.2.4.4.3;Validate while typing;88
7.2.4.4.4;Validate only after submit attempt;90
7.2.4.5;One big Form example;90
7.2.5;Conclusion;95
7.3;Chapter 5: Responding to Gestures;96
7.3.1;Meet the button family;97
7.3.1.1;RaisedButton;99
7.3.1.2;FlatButton and IconButton;100
7.3.1.3;FloatingActionButton;100
7.3.1.4;CupertinoButton;101
7.3.2;Dismissible;102
7.3.3;Custom gestures for your custom widgets;102
7.3.3.1;Step 1: Decide on your gestures and behaviors;103
7.3.3.2;Step 2: Create your custom widget;104
7.3.3.3;Step 3: Add a GestureDetector widget;105
7.3.3.4;Step 4: Associate your gesture with its behavior;106
7.3.4;Example 1: Reacting to a long press;106
7.3.5;Example 2: Pinching to add a new item;108
7.3.6;Example 3: Swiping left or right;109
7.3.7;What if there are two or more gestures happening at the same time?;111
7.3.8;Conclusion;111
7.4;Chapter 6: Laying Out Your Widgets;112
7.4.1;Laying out the whole scene;119
7.4.1.1;MaterialApp widget;119
7.4.1.2;The Scaffold widget;120
7.4.1.3;The AppBar widget;121
7.4.1.4;SafeArea widget;123
7.4.1.5;SnackBar widget;124
7.4.2;How Flutter decides on a widget’s size;125
7.4.2.1;The dreaded “unbounded height” error;126
7.4.2.2;Flutter’s layout algorithm;127
7.4.3;Putting widgets next to or below others;129
7.4.4;Your widgets will never fit!;132
7.4.5;What if there’s extra space left over?;132
7.4.5.1;mainAxisAlignment;132
7.4.5.2;crossAxisAlignment;134
7.4.5.3;Expanded widget;136
7.4.6;What if there’s not enough space?;140
7.4.6.1;The ListView widget;140
7.4.6.1.1;Regular ListView: When you have a few widgets to display;141
7.4.6.1.2;ListView.builder: When you’re building widgets from a list of objects;142
7.4.7;Container widget and the box model;143
7.4.7.1;Alignment and positioning within a Container;145
7.4.7.2;So how do you determine the size of a Container?;147
7.4.8;Special layout widgets;149
7.4.8.1;Stack widget;149
7.4.8.2;GridView widget;150
7.4.8.2.1;GridView.extent();150
7.4.8.2.2;GridView.count();151
7.4.8.3;The Table widget;153
7.4.9;Conclusion;156
7.5;Chapter 7: Navigation and Routing;157
7.5.1;Stack navigation;158
7.5.1.1;Navigating forward and back;159
7.5.1.2;Get result after a scene is closed;161
7.5.2;Drawer navigation;162
7.5.2.1;The Drawer widget;164
7.5.2.2;Filling the drawer;166
7.5.3;Tab Navigation;168
7.5.3.1;TabController;169
7.5.3.2;TabBarView;169
7.5.3.3;TabBar and Tabs;170
7.5.3.4;TabBar at the bottom;171
7.5.4;The Dialog widget;171
7.5.4.1;showDialog() and AlertDialog;172
7.5.4.2;Responses with a Dialog;173
7.5.5;Navigation methods can be combined;175
7.6;Chapter 8: Styling Your Widgets;176
7.6.1;Thinking in Flutter Styles;177
7.6.2;A word about colors;178
7.6.3;Styling Text;180
7.6.3.1;TextStyle;180
7.6.3.2;Custom fonts;182
7.6.4;Container decorations;185
7.6.4.1;Border;187
7.6.4.2;BorderRadius;189
7.6.4.3;BoxShape;190
7.6.5;Stacking widgets;193
7.6.5.1;Positioned widget;195
7.6.6;Card widget;197
7.6.7;Themes;198
7.6.7.1;Applying theme properties;200
7.6.8;Conclusion;203
7.7;Chapter 9: Managing State;204
7.7.1;What is state?;204
7.7.2;What goes in a StatefulWidget?;206
7.7.3;The most important rule about state!;207
7.7.4;Passing state down;208
7.7.5;Lifting state back up;209
7.7.6;An example of state management;210
7.7.7;When should we use state?;215
7.7.8;Advanced state management;217
7.7.8.1;InheritedWidget;217
7.7.8.2;BLoC;217
7.7.8.3;ScopedModel;218
7.7.8.4;Hooks;218
7.7.8.5;Provider;219
7.7.8.6;Redux;219
7.7.8.7;Whoa! That’s a lot of packages!;220
7.7.9;Conclusion;220
8;Part III: Above and Beyond;221
8.1;Chapter 10: Your Flutter App Can Work with Files;222
8.1.1;Including libraries in your Flutter app;223
8.1.1.1;Finding a library;223
8.1.1.2;Adding it to pubspec.yaml;225
8.1.1.3;Importing the library;225
8.1.1.4;Using the library;226
8.1.2;Futures, async, and await;226
8.1.2.1;Why would it wait?;227
8.1.2.2;How do we get the data from a Future?;228
8.1.2.3;await;229
8.1.2.4;async;230
8.1.3;Including a file with your app;231
8.1.4;Writing a file;233
8.1.4.1;And reading it!;234
8.1.5;Using JSON;235
8.1.5.1;Writing your app’s memory to JSON;236
8.1.5.2;Reading JSON into your app’s memory;237
8.1.6;Shared preferences;238
8.1.6.1;To write preferences;239
8.1.6.2;To read preferences;239
8.1.7;Conclusion;240
8.2;Chapter 11: Making RESTful API Calls with HTTP;241
8.2.1;What is an API call?;242
8.2.2;The flavors of API requests;242
8.2.3;Making an HTTP GET or DELETE request;244
8.2.4;Making an HTTP PUT, POST, or PATCH request;245
8.2.5;HTTP responses to widgets;246
8.2.5.1;Brute force – The easy way;247
8.2.5.2;FutureBuilder – The clean way;248
8.2.5.2.1;StreamBuilder;250
8.2.6;Strongly typed classes;252
8.2.6.1;Create a business class;252
8.2.6.2;Write a .fromJSON() method;253
8.2.6.3;Use .fromJSON() to hydrate the object;254
8.2.7;One big example;254
8.2.7.1;Setting up;256
8.2.7.2;Create the Flutter app;257
8.2.7.3;Making a strongly typed business class;257
8.2.7.4;PeopleList.dart;258
8.2.7.5;A GET request in Flutter;261
8.2.7.6;A DELETE request in Flutter;261
8.2.7.7;PeopleUpsert.dart;262
8.2.7.8;A POST and PUT request in Flutter;266
8.2.8;Conclusion;268
8.3;Chapter 12: Using Firebase with Flutter;269
8.3.1;Introducing Firebase;270
8.3.1.1;Cloud Firestore;271
8.3.1.2;Cloud Functions;272
8.3.1.3;Authentication;273
8.3.2;Setting up Firebase itself;273
8.3.2.1;(1) Creating a Firebase project;274
8.3.2.2;(2) Creating the database;277
8.3.2.3;(3) Creating an iOS app;281
8.3.2.4;(4) Creating an Android app;287
8.3.2.4.1;Install the google-services.json file;289
8.3.2.4.2;Adding to the gradle files;290
8.3.2.5;(5) Adding FlutterFire plugins;291
8.3.3;Using Firestore;292
8.3.3.1;To get a collection;293
8.3.3.2;To query;295
8.3.3.3;To upsert;295
8.3.3.4;To delete;296
8.3.4;Where to go from here;297
9;Appendix A:Dart Language Overview;300
9.1;What is Dart?;300
9.2;Expected features – Dart Cheatsheet;301
9.2.1;Data types;301
9.2.2;Arrays/lists;302
9.2.3;Conditional expressions;302
9.2.4;Looping;303
9.3;Classes;303
9.3.1;Class constructors;304
9.4;Unexpected things about Dart;304
9.4.1;Type inference;305
9.4.2;final and const;305
9.4.3;Variables are initialized to null;306
9.4.4;String interpolation with $;307
9.4.5;Multiline strings;307
9.4.6;Spread operator;307
9.4.7;Map;308
9.4.8;Functions are objects;308
9.4.9;Big arrow/Fat arrow;309
9.4.10;Named function parameters;309
9.4.11;Omitting “new” and “this.”;310
9.4.12;Class constructor parameter shorthand;311
9.5;Private class members;312
9.5.1;Mixins;312
9.5.2;The cascade operator (..);313
9.5.3;No overloading;314
9.5.4;Named constructors;314
10;Index;316



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.