Flutter Performance
Commands
flutter run --profile # Required for profiling
flutter pub global run devtools
Targets
| Target |
Threshold |
| 60 FPS |
16.67ms/frame |
| Cold start |
< 2s |
Widget Optimization
Const Constructors
// GOOD
const Column(children: [Text('Static'), Icon(Icons.star)])
Extract Widgets
// GOOD: Only counter rebuilds
Column(
children: [
const ExpensiveWidget(), // no rebuild
_Counter(), // isolated state
],
)
RepaintBoundary
RepaintBoundary(child: AnimatedWidget())
Build Optimization
// BAD: compute in build
final sorted = items..sort();
// GOOD: compute once
late List<Item> _sorted;
void initState() { _sorted = items..sort(); }
Memory Management
@override
void dispose() {
_animController.dispose();
_textController.dispose();
_subscription?.cancel();
super.dispose();
}
// Check mounted
if (!mounted) return;
setState(() => _data = data);
Lists
// Use builder
ListView.builder(itemCount: items.length, itemBuilder: ...)
// Fixed extent
ListView.builder(itemExtent: 72, ...)
// Keys
ValueKey(item.id)
Images
CachedNetworkImage(
imageUrl: url,
memCacheWidth: 200,
memCacheHeight: 200,
)
Checklist
Related Skills
- flutter-animations: Animation performance
- flutter-code-quality: Static analysis