Flutter Core Concepts
Scope: Learn how Flutter composes and renders UI so your interfaces stay predictable across screen sizes and platforms.
Layout
Flutter UI is constraint-driven. Understanding the parent-to-child layout contract is essential to avoid overflow, jitter, and brittle composition.
Widget Taxonomy
Stateless vs Stateful
class CounterLabel extends StatelessWidget {
const CounterLabel({super.key, required this.value});
final int value;
@override
Widget build(BuildContext context) => Text('Count: $value');
}
class CounterButton extends StatefulWidget {
const CounterButton({super.key});
@override
State<CounterButton> createState() => _CounterButtonState();
}
Composition
Prefer many focused widgets over giant build methods. Smaller widgets improve readability, testability, and rebuild isolation.
Constraints
Constraint Flow
- Parent sends min/max constraints to child.
- Child chooses size inside constraints.
- Parent positions child.
Responsive Example
Widget build(BuildContext context) {
return LayoutBuilder(
builder: (context, constraints) {
final isWide = constraints.maxWidth >= 900;
return isWide
? Row(children: [Expanded(child: Sidebar()), Expanded(flex: 3, child: Content())])
: Column(children: [Header(), Expanded(child: Content())]);
},
);
}
Theming
ThemeData
final appTheme = ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: const Color(0xFF1565C0)),
useMaterial3: true,
textTheme: Typography.blackMountainView,
);
Tokens
Centralize spacing, color, and typography constants. Avoid scattering hardcoded visual values across feature widgets.
Rendering
Rebuilds
- Use const constructors for static subtrees.
- Extract dynamic nodes to isolate rebuild scope.
- Use profiler timeline before introducing micro-optimizations.
Engineering Notes
Create a shared UI architecture guide: widget naming conventions, layout standards, and theme extension rules.
Common Mistakes
- Using nested Rows/Columns without understanding constraint propagation.
- Hardcoding paddings and colors per screen.
- Building entire pages in one widget class, making refactors risky.
Practice Scope
Build a responsive dashboard screen with reusable widgets, centralized theme tokens, and two adaptive breakpoints.
Back to roadmap: Flutter Roadmap