Overview
- What’s Flutter
- Widgets
- Render Trees (Widgets, Element, RenderObject)
- Navigation & RouteAware
- Communicate with Native
- Networking
- State Management
What’s Flutter
Flutter is Google’s mobile app SDK for crafting high-quality native interfaces on iOS and Android in record time. Flutter works with existing code, is used by developers and organizations around the world, and is free and open source.Flutter
Why use Flutter
- Be highly productive
- Develop for iOS and Android from a single codebase
- Do more with less code, even on a single OS, with a modern, expressive language and a declarative approach
- Prototype and iterate easily
- Experiment by changing code and reloading as your app runs (with hot reload)
- Fix crashes and continue debugging from where the app left off
- Create beautiful, highly-customized user experiences
- Benefit from a rich set of Material Design and Cupertino (iOS-flavor) widgets built using Flutter’s own framework
- Realize custom, beautiful, brand-driven designs, without the limitations of OEM widget sets
Flutter architecture
Threading
- Platform thread (main thread on android)
- UI thread (Dart code)
- GPU thread (Skia, graphics library)
- I/O thread (I/O operation, Network)
Flutter Environment Setup
- Install
- IDE : Android Studio/IntelliJ IDEAVisual Studio Code
- Create Flutter app
flutter create $app_name
- How Flutter app run

Entrance of Dart code
main.dart
|
|
Widgets - layout & views in Flutter
- Basic view widgets
Text
,Image
,Button
… - Basic layout widgets
Row
,Column
,Stack
… - Widget catalog
StatelessWidget & StatefulWidget
- StatelessWidget (Widget without state)
|
|
- StatefulWidget(Widget with state)
|
|
State lifecycle
Render Trees (Widgets, Element, RenderObject)

Navigation
Navigator & PageRoute
|
|
Communicate with Native
MethodChannel
Flutter code
|
|
Native code
|
|
Flutter plugin
Build your own plugin for Flutter
Networking
|
|
State Management
List of state management approaches