Flutter Expertise
State Management (Riverpod / BLoC)
- Riverpod: Use
ConsumerWidgetorref.watchcarefully to limit widget rebuilds. Keep providers small and focused. - BLoC: Use
BlocBuilderwithbuildWhento prevent unnecessary rebuilds. Maintain distinct states (Loading, Success, Error).
// Riverpod Example
final counterProvider = StateProvider((ref) => 0);
class CounterText extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
// Only rebuilds when counterProvider changes
final count = ref.watch(counterProvider);
return Text('Count: $count');
}
}
Render Tree Optimization
- Avoid rebuilding the entire tree. Extract widgets into smaller
constStatelessWidgets. - Use
RepaintBoundaryto isolate widgets that paint frequently (e.g., animations). - Minimize the use of heavy widgets like
OpacityandClipRRectwhen simpler alternatives exist.
%%{init: {"theme": "default", "flowchart": {"useMaxWidth": true}}}%%
flowchart TD
A[Build Method Triggered] --> B{Is Widget Const?}
B -- Yes --> C[Skip Rebuild]
B -- No --> D[Evaluate State Changes]
D --> E{Use RepaintBoundary?}
E -- Yes --> F[Paint Isolated Area]
E -- No --> G[Paint Entire Tree]