Flutter
Flutter — mobile app development framework for iOS and Android.
Stack Components
Why
Flutter renders directly to the Skia/Impeller GPU canvas, delivering consistent 60-120fps UI from a single Dart codebase. Dart AOT compiles directly to native ARM, avoiding JIT overhead. Hot reload keeps iteration fast, and the widget tree is fully declarative. Flutter is used by Google Pay, BMW, and Alibaba (Xianyu) in production.
When
Use for cross-platform iOS+Android UI-intensive apps sharing one codebase. Avoid when you need heavy platform-native API integration (background services, BLE, deep OS hooks) or when the product is primarily a Web app — Flutter Web has weaker SEO and DOM interop.
How
Example
Common Problems
- ⚠Flutter SDK version mismatch — pin versions in pubspec.yaml
- ⚠iOS CocoaPods dependency conflicts — run flutter clean && pod install
- ⚠Large app binary size — use --split-per-abi and tree-shake icons
Best Practices
- ✓Use Flutter DevTools for profiling widget rebuilds and memory
- ✓Enable impeller renderer (default since Flutter 3.10) for smoother animations
- ✓Use const constructors to prevent unnecessary widget rebuilds
FAQ
What is Flutter and what projects is it for?
Flutter — mobile app development framework for iOS and Android. It pairs layered technologies for end-to-end type safety and out-of-the-box deploys, fitting everything from MVPs to production SaaS.
How do I spin up a working demo with Flutter in 10 minutes?
Two steps: (1) flutter create myapp; (2) cd myapp. Get the local dev server running, then wire one real data source to verify the end-to-end loop.
What is the most common pitfall with Flutter and how do I avoid it?
The most common pitfall is: Flutter SDK version mismatch — pin versions in pubspec.yaml. Avoid it by adding the matching checklist to your PR template and running type-check + lint + unit tests in CI — three gates before merge.
What are the best practices for Flutter?
Best practices for Flutter include: Use Flutter DevTools for profiling widget rebuilds and memory; Enable impeller renderer (default since Flutter 3.10) for smoother animations; Use const constructors to prevent unnecessary widget rebuilds. The first one — "Use Flutter DevTools for profiling widget rebuilds and memory" — should be set up at project init to avoid costly rework later.
When should I NOT choose Flutter?
Pick something else in three cases: (1) the team has zero experience with the core framework and the deadline is tight (learning-curve risk); (2) it's a pure content/marketing site (Astro is lighter); (3) you need very high throughput (>10k RPS) or strict-consistency microservices (Go/Rust). Flutter shines for mid-to-high complexity full-stack and API work — don't over-engineer simple static pages with it.