vii.
Introduction
Welcome to Flutter Apprentice!
Flutter is an incredible user interface (UI) toolkit that lets you build apps for iOS and Android — and even the web and desktop platforms like macOS, Windows and Linux — all from a single codebase.
Flutter has all the benefits of other cross-platform tools, especially because you’re targeting multiple platforms from one codebase. Furthermore, it improves upon most cross-platform tools thanks to a super-fast rendering engine that makes your Flutter apps perform nearly, or even exactly, the same as native apps.
In addition, Flutter features are generally independent of native features, since you use Flutter’s own type of UI elements, called widgets, to create your UI. And Flutter has the ability to work with native code, so you can integrate your Flutter app with native features when you need to.
If you’re coming from a platform like iOS or Android, you’ll find the Flutter development experience refreshing! Thanks to a feature called “hot reload”, you rarely need to rebuild your apps as you develop them. A running app in a simulator or emulator will refresh with code changes automatically as you save your source files!
In this book, you’ll see how to build full-featured Flutter apps, gain experience with a wide range of Flutter widgets and learn how to deploy your apps to mobile app stores.
How to read this book
In the first section of the book, you’ll learn how to set up a Flutter development environment. Once that’s done, you’ll start building your first Flutter app.
The next two sections focus on UI development with Flutter widgets. You’ll see just how impressive Flutter user interfaces can be.
The fourth section switches to building a new app. You’ll use it to learn about using networking and databases with Flutter, as well as the all-important topic of state management.
The book’s final section shows you how to incorporate platform-specific assets into your app, then demonstrate how to deploy your apps to the mobile app stores.
Here’s a breakdown of these five main sections of the book:
Section I: Build Your First Flutter App
The chapters in this section introduce you to Flutter, get you up and running with a Flutter development environment and walk you through building your first Flutter app.
You’ll learn about where Flutter came from and why it exists, understand the structure of Flutter projects and see how to create the UI of a Flutter app.
You’ll also get your first introduction to the key component found in Flutter user interfaces: widgets!
Section II: Everything’s a Widget
In this section, you’ll start to build a full-featured recipe app named Fooderlich. You’ll gain an understanding the wide range of widgets available in Flutter and put them to use. Then you’ll learn the theory of how widgets work behind the scenes.
Finally, you’ll dive deeper into layout widgets, scrollable widgets and interactive widgets.
Section III: Navigating Between Screens
You’ll continue working on the Fooderlich app in this section, learning about navigating between screens and working with deep links.
Topics you’ll learn include Navigator 2.0 and Flutter Web.
Section IV: Networking, Persistence & State
Most apps interact with the network to retrieve data and then persist that data locally in some form of cache, such as a database. In this section, you’ll build a new app that lets you search the Internet for recipes, bookmark recipes and save their ingredients into a shopping list.
You’ll learn about making network requests, parsing the network JSON response and saving data in a SQLite database. You’ll also get an introduction to using Dart streams.
Finally, this section will dive deeper into the important topic of app state, which determines where and how to refresh data in the UI as a user interacts with your app.
Section V: Deployment
Building an app for you own devices is great; sharing your app with the world is even better!
In this section, you’ll go over the steps and processes to release your apps to the iOS App Store and Google Play Store. You’ll also see how to use platform-specific assets in your apps.