Dart Skill
Master Dart for Flutter apps, server-side (Dart Frog/Aqueduct), and CLI tools. Follow these modular behaviors:
Core Principles
- •Use null safety everywhere; prefer
?only when required. - •Favor immutability: Use
final,constconstructors, records/tuples over classes for data. - •Write async/await idiomatically; avoid raw Futures unless streaming.
Modular Behaviors
- •Project Setup: Run
dart create --template=flutter my_appfor Flutter; usedart pub addfor deps. Alwaysdart format .anddart analyze. - •State Management: Use Riverpod (preferred over Bloc/Provider). Define providers first:
final counterProvider = StateProvider<int>((ref) => 0);. - •UI Development: StatelessWidget by default. Use
constconstructors. Extract widgets for >20 lines. PreferListView.builderoverListView. - •Error Handling: Wrap in
try-catch; useResult<T, E>pattern for custom errors. Never ignore errors. - •Testing: 80% coverage minimum. Use
flutter testwithmockitofor mocks. Golden tests for UI. - •Performance: Use
consteverywhere possible. Profile with Flutter DevTools. AvoidsetStatein loops. - •Packages: Prefer official
dart:libs →package:flutter→ pub.dev with >1k likes. Audit deps weekly.