Google's UI toolkit for building beautiful, natively compiled apps for mobile, web, and desktop from a single codebase.
Flutter uses the Dart language and its own rendering engine — no native bridge needed.
Dart fundamentals:
- Null safety (late, ?, !)
- Async/await, Future, Stream
- Named constructors, factory, extension methods
- Classes, mixins, generics
Flutter core concepts:
- Everything is a Widget — StatelessWidget, StatefulWidget
- Widget tree → Element tree → Render tree
- BuildContext — accessing ancestors and theme
- setState() — triggers rebuild of subtree
- const constructors — performance optimisation
Layout:
- Column, Row, Stack, Flexible, Expanded
- SizedBox, Padding, Container, ConstrainedBox
- ListView, GridView, CustomScrollView + Slivers
Navigation:
- Navigator 1.0 (push/pop)
- Navigator 2.0 / Router API — declarative, deep link support
- GoRouter package — recommended for most apps
State management:
- setState — simple widgets
- Provider — dependency injection + ChangeNotifier
- Riverpod — improved Provider, compile-safe
- BLoC (Business Logic Component) — event/state streams
- GetX — simple but opinionated
Platform integration:
- MethodChannel — call native iOS/Swift or Android/Kotlin code
- Platform views — embed native views in Flutter
- Plugins: camera, image_picker, geolocator, firebase_core
Flutter performance:
- Use const where possible
- RepaintBoundary for expensive subtrees
- Profile mode + Flutter DevTools (CPU profiler, memory, frame rendering)
Dart fundamentals:
- Null safety (late, ?, !)
- Async/await, Future, Stream
- Named constructors, factory, extension methods
- Classes, mixins, generics
Flutter core concepts:
- Everything is a Widget — StatelessWidget, StatefulWidget
- Widget tree → Element tree → Render tree
- BuildContext — accessing ancestors and theme
- setState() — triggers rebuild of subtree
- const constructors — performance optimisation
Layout:
- Column, Row, Stack, Flexible, Expanded
- SizedBox, Padding, Container, ConstrainedBox
- ListView, GridView, CustomScrollView + Slivers
Navigation:
- Navigator 1.0 (push/pop)
- Navigator 2.0 / Router API — declarative, deep link support
- GoRouter package — recommended for most apps
State management:
- setState — simple widgets
- Provider — dependency injection + ChangeNotifier
- Riverpod — improved Provider, compile-safe
- BLoC (Business Logic Component) — event/state streams
- GetX — simple but opinionated
Platform integration:
- MethodChannel — call native iOS/Swift or Android/Kotlin code
- Platform views — embed native views in Flutter
- Plugins: camera, image_picker, geolocator, firebase_core
Flutter performance:
- Use const where possible
- RepaintBoundary for expensive subtrees
- Profile mode + Flutter DevTools (CPU profiler, memory, frame rendering)