Flutter

Dev Tools

Build reliable Flutter apps avoiding state loss, widget rebuild traps, and async pitfalls.

Install

openclaw skills install flutter

Quick Reference

TopicFile
setState, state loss, keysstate.md
build method, context, GlobalKeywidgets.md
FutureBuilder, dispose, mountedasync.md
Context after pop, deep linkingnavigation.md
const, rebuilds, performanceperformance.md
Platform channels, null safetyplatform.md

Critical Rules

  • setState after dispose — check mounted before calling, crashes otherwise
  • Key missing on list items — reordering breaks state, always use keys
  • FutureBuilder rebuilds on parent rebuild — triggers future again, cache the Future
  • BuildContext after async gap — context may be invalid, check mounted first
  • const constructor — prevents rebuilds, use for static widgets
  • StatefulWidget recreated — key change or parent rebuild creates new state
  • GlobalKey expensive — don't use just to access state, pass callbacks instead
  • dispose incomplete — cancel timers, subscriptions, controllers
  • Navigator.pop with result — returns Future, don't ignore errors
  • ScrollController not disposed — memory leak
  • Image caching — use cached_network_image, default doesn't persist
  • PlatformException not caught — platform channel calls can throw