NETROOM
The successor to provider from the same author: providers are declared globally, typos become compile errors, and reading state needs no BuildContext. It handles caching, auto-dispose, provider-to-provider dependencies and async work cleanly - AsyncValue splits loading, data and error for you. Actively developed; the 3.x line requires Dart 3.12. The curve is steeper than provider's, and riverpod_generator drags in build_runner. Overkill for one small form.
The HTTP client you reach for when package:http runs out: interceptors, request cancellation via CancelToken, FormData and file uploads, timeouts, custom adapters and transformers. Pure Dart on every platform including web and WASM - no native code, no Podfile or Gradle edits. The 5.x line needs Dart 2.18+. A big ecosystem grew around it: retry, cache, cookie jars, loggers. Downside: its Response type and error model are its own, so moving off http rewrites your networking layer.
The official declarative router from the Flutter team, built on Navigator 2.0: routes are described by path, deep links and web URLs just work, redirects handle auth gating, ShellRoute nests tab navigators, and errors are typed. It moves fast - 18.0.0 shipped August 2026 and requires Dart 3.12 with Flutter 3.44. Majors land often and break the API, so budget for upgrades. Add go_router_builder if you want type-safe routes.
The widget layer for the BLoC pattern: BlocProvider hands blocs down the tree, BlocBuilder rebuilds UI per state, BlocListener catches one-shot events like a snackbar, BlocSelector narrows rebuilds to a single field. You get strict structure and excellent testability at the cost of more boilerplate than Riverpod or signals - noticeable on small screens. All platforms, a Flutter Favorite, built on provider underneath. Dart 2.14+; the 9.0 release (2025) dropped legacy APIs.
A codegen for immutable models: one declaration gives you copyWith, ==, hashCode, toString, union types with when and map and, paired with json_serializable, JSON parsing. Actively developed - 4.0.1 landed late August 2026 and requires Dart 3.13. It goes in dev_dependencies next to build_runner, with annotations in freezed_annotation. Note that Dart 3's own sealed classes and pattern matching cover part of its job; don't add a generator for a single union.
Golden testing in Flutter without the endless cross-machine diffs. Alchemist splits runs in two: CI goldens render with a blocky test font and match on any OS, platform goldens catch real rendering locally. You wire it once in flutter_test_config.dart, then call goldenTest() instead of matchesGoldenFile. Take it when screenshot tests fail differently on every developer's machine. Alive: 0.14.0 from March 2026, Dart 3.8+, Flutter 3.32+, MIT.
Animate.css effects ported onto widgets: FadeInUp, BounceIn, ZoomOut and about fifty more. Wrap a widget and you get the animation - no controllers, no Tween, no manual dispose. It has zero dependencies beyond flutter, so it costs nothing to add. Great for entrance animations on lists and screens; for complex choreography or chained sequences reach for flutter_animate or a raw AnimationController. 5.1.0 from April 2026, Dart 3.1+, every platform, wasm-ready, MIT.
A grab bag of text animations: typewriter, wavy, rotate, fade in per character, blinking cursor. Drop in AnimatedTextKit with a list of effects and you have a lively headline for an onboarding or splash screen. Flutter Favorite, almost no dependencies, runs everywhere including web and wasm. Text only: for screen transitions look at animations, for general motion at flutter_animate. 4.3.0 from October 2025, MIT. Slow-moving but alive.
The Flutter team's own package of ready-made Material transitions: container transform, shared axis, fade through and fade. Useful when you need a predictable card-to-screen transition without hand-rolling Hero and curves. OpenContainer alone covers half the common cases. Take it when you want motion straight out of the Material guidelines; for arbitrary choreography it is too narrow. 3.0.0 from August 2026 needs Flutter 3.44+, BSD-3, all platforms.
A fork of the abandoned flushbar: a toast-style replacement for SnackBar with full control over position, gradient, icon, button, progress indicator and background blur. Handy when the design asks for more than the stock Material snackbar. Worth knowing: the package changed hands and the 2.x line picked up http, shared_preferences and url_launcher as dependencies. That is an odd set for a pure UI widget - read the source before shipping. 2.2.4 from May 2026, MIT.
Marc Glasberg's take on Redux with the boilerplate cut out: instead of reducers and middleware you write ReduxAction classes with an async reduce(). Error handling, waiting on actions from the UI, state persistence and test helpers all ship in the box. Take it if you like a single store and a predictable flow but got tired of flutter_redux ceremony. Small community though - 157 likes against thousands for bloc and Riverpod. 28.1.0 from July 2026, Dart 3.5+, MIT.
Background audio done properly: notification controls, lock screen, Android Auto and CarPlay, headset button handling. It does not decode anything itself - just_audio or audioplayers does the playing while audio_service owns the service and the media session. Expect edits to AndroidManifest and Info.plist, plus background modes in Xcode on iOS. Overkill for a one-off sound effect. 0.18.19 from June 2026, Flutter 3.27+, MIT. No Windows or Linux.
Play several sounds at once - from assets, a file, a URL or in-memory bytes. Each AudioPlayer instance is independent, which makes the package a good fit for games and sound effects. For playlist streaming, gapless playback and precise seeking just_audio is stronger; for background playback you still need audio_service on top. All six platforms; there is native code but you rarely touch Podfile or Gradle. 6.8.1 from June 2026, Flutter 3.44+, MIT.
A code-generated router: you declare routes with annotations, build_runner emits typed classes, and navigation becomes context.router.push(BookRoute(id: 1)). Its strong suit is nested routers, tabs and guards - better thought out here than in go_router. The price is a generation step in every build and in CI. Take it for apps with deep screen nesting; for three screens go_router is enough. 11.1.0 from December 2025, Flutter 3.16+, MIT.
A Text replacement that shrinks the font until the string fits its box: minFontSize, stepGranularity, presetFontSizes and groups so neighbouring labels end up at the same size. A lifesaver for localisation, where German or Russian blows up a layout. Flutter Favorite with over a million downloads a month, but no release since October 2021: the code is stable and works, the author simply moved on. Weigh that for the long haul. MIT.
Badge markers on top of any widget: a cart counter, an unread dot, a label on a tab icon. Shape, padding, shadow, position relative to the child and the appearance animation are all configurable. Easier than hand-building a Stack with Positioned and eyeballing pixels every time, and it pulls in nothing beyond flutter. All platforms, wasm-ready. 3.2.0 from April 2026, Dart 3.0+, Flutter 3.10+, MIT. Maintained, if unhurried.
Battery level, charging state and power-save mode - as a one-shot query and as an event stream. Part of Flutter Community's plus_plugins set and a Flutter Favorite. It took over from flutter.dev's abandoned battery plugin with nearly the same API, so migration is a one-liner. Handy for backing off background sync on a low charge. Data is thinner on web and desktop, and Linux needs UPower. 7.1.1 from July 2026, Flutter 3.22+, BSD-3.
Navigator 2.0 routing built around BeamLocation: each screen or branch describes its own page stack, which buys you honest nested navigation and guards. On web it beats go_router with its care for URLs and browser history. The catch is real: 1.7.0 landed in October 2024 and the repo has barely moved since - no discontinued flag, but do not expect new work. For greenfield go_router is safer; Beamer is for keeping existing apps alive. MIT.
Custom windows for Flutter desktop: your own title bar, minimise, maximise and close buttons, drag by the header, size and position on start. Windows, macOS and Linux. The dates are the problem: 0.1.6 shipped in December 2023 and issues keep piling up. New projects reach for window_manager instead - more active and more capable (fullscreen, multiple windows, window events). Requires edits in the native entry points: main.cpp, MainFlutterWindow.swift, my_application.cc. MIT.
The core of the BLoC pattern: events in, states out, with the whole data flow visible and easy to test. Pure Dart with no Flutter dependency, so the logic can live in its own package and be reused even on a server. More verbose than Riverpod, but teams argue less about where state lives. Cubit ships in the same package when you do not need events. Flutter Favorite with roughly 2M downloads a month. 9.2.1 from May 2026, MIT.
The blocTest() helper for testing blocs and cubits: you give it build, act and expect, and it subscribes to the state stream, waits and compares for you. No more hand-rolled StreamSubscription plumbing and async waits. It builds on mocktail, so bloc mocking comes free through MockBloc and whenListen. Tied to bloc - you cannot bolt it onto Riverpod. 10.0.0 from January 2025; releases are rare because the API settled long ago. MIT.
The code generation engine for Dart: it runs the builders behind json_serializable, freezed, retrofit, drift, mockito and auto_route. Two commands matter - build with --delete-conflicting-outputs, and watch while developing. It lives in dev_dependencies only and never reaches your runtime. Slow on big projects, and a stale cache is fixed with build clean. Half the modern Dart stack needs it: 6M downloads a month. 2.16.0 from July 2026, BSD-3.
Network images with an in-memory and on-disk cache: placeholder, errorWidget, progress indicator and manual invalidation through CacheManager. The default choice for feeds where the same avatars load dozens of times. Against Image.network it wins by not hitting the network again after an app restart. On web the cache is whatever the browser allows. 4.0.0 from August 2026 raised the floor to Flutter 3.44+; stay on the 3.x line for older SDKs. MIT.
The official flutter.dev plugin: live preview, photo and video capture, and image buffer streaming into Dart for ML. Android goes through CameraX, iOS through AVFoundation, web is limited and desktop is unsupported. Native edits are mandatory: permissions in AndroidManifest, NSCameraUsageDescription and NSMicrophoneUsageDescription in Info.plist, a minimum iOS version in the Podfile. For QR scanning mobile_scanner is simpler. 0.12.0+2 from July 2026, Flutter 3.38+, BSD-3.
A carousel with infinite scroll, autoplay, scaling of neighbouring cards and a controller for programmatic jumps. The classic pick for banners and onboarding. The package spent a while in limbo, but the 5.x line was picked up and it is healthy again: 5.1.2 from February 2026, a full 160 out of 160 pub points. If you only need a swipeable screen, PageView is enough - the carousel earns its place with autoplay and indicators. MIT, all platforms.
A wrapper around video_player that draws everything it lacks: play and pause, a scrub bar, volume, speed, fullscreen and subtitles, in both Material and Cupertino skins. Decoding stays with video_player, so you inherit its limits too - HLS quirks on Android, and no Windows or Linux. Take it so you do not hand-build playback controls. 1.16.1 from September 2026, Flutter 3.44+, MIT, with regular releases.
An HTTP client generator on top of the http package: you declare an abstract service with @Get and @Post annotations and build_runner emits the implementation. Same idea as Retrofit on Android. Unlike Dart's retrofit it does not drag in Dio, living on http with its own interceptors and converters - fewer dependencies, but a smaller ecosystem. Pure Dart, so it works for server code too. Flutter Favorite. 8.7.0 from July 2026, Dart 3.9+, MIT.
The Firestore client: documents and collections, live snapshots, an offline cache you can write to without a network, transactions and batches. Set it up with flutterfire configure; it needs firebase_core, and security lives entirely in server-side rules because the client cannot be trusted. Mind the per-read billing: one snapshots() subscription on a long list gets expensive fast. Windows is partial, Linux absent. 6.9.0 from August 2026, Flutter 3.27+, BSD-3.
Calls Firebase callable functions straight from the app: httpsCallable('name').call(data), with the auth token and App Check passed automatically. You want it wherever logic cannot live on the client - payments, secrets, access that bypasses Firestore rules. Do not confuse it with HTTP triggers, which you hit with a plain http client. Classic trap: the function region - get it wrong and you get not-found. 6.4.0 from August 2026, Flutter 3.27+, BSD-3. No Windows or Linux.