NETROOM
Excalidraw is a virtual whiteboard for diagrams in a hand-drawn style: architecture sketches, user flows, wireframes and anything else that is quicker to draw than to describe. It runs in the browser with no sign-up - open a tab and start drawing. There are libraries of ready-made shapes, export to PNG and SVG, collaboration over a link with end-to-end encrypted rooms, and files you can keep locally or in your own storage. Open source, with a self-hosted option for teams.
Squoosh compresses images in the browser: drop a file in, pick a format and a quality, download the result. A slider puts the original and the compressed version side by side, so you can see exactly where artefacts start and stop just before them. It handles a range of formats, each with its own controls - from a single quality dial to the codec's own parameters. Nothing is uploaded: the work happens on your device, and it runs offline once installed as an app. Built by Google Chrome Labs, open source, no sign-up.
The Cyber Swiss Army Knife, built by the UK's GCHQ. You chain operations into a "recipe" and push text or a file through it: base64, XOR, AES, DES, Blowfish, hashes, hexdumps, X.509 and IPv6 parsing, archive extraction, charset conversion. Everything runs in the browser - nothing is sent to a server, and you can download the page and use it offline. Apache 2.0 plus Crown Copyright. Invaluable for picking apart logs, dumps and suspicious payloads.
A Swiss army knife for PDFs in the browser, running on your own server: merge and split, rotate, compress, convert to and from office formats, OCR, sign, redact, and chain operations through a REST API - over fifty tools in all. The point is that files never reach someone else's cloud. One docker run gets you going, and a desktop client and Kubernetes charts exist too. It is open core: the base is open source while some capabilities sit behind paid Server and Enterprise plans.
Kills hand-written == and hashCode: extend Equatable, list the fields in props, and value equality just works. Without it every state update in bloc looks like a fresh object and widgets rebuild for nothing. Pure Dart, every platform, and - the key difference from freezed or built_value - no codegen at all, though you also give up copyWith and serialization. Dart 3 required. Use EquatableMixin when the class already extends something else.
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.
Opens links outside your app: http and https, tel, sms, mailto, and arbitrary intent schemes on Android. A first-party Flutter plugin covering all six platforms. Since 6.1 use launchUrl(Uri) with LaunchMode rather than the string-based launch - the mode picks an external browser, an in-app WebView or a Custom Tab. Do not skip the manifest work: list schemes in LSApplicationQueriesSchemes on iOS and in the queries block on Android 11+, or canLaunchUrl returns false. Releases are rare; it is settled.
Key-value storage over NSUserDefaults, SharedPreferences and friends - the first-party Flutter plugin, all six platforms. It stores bool, int, double, String and List<String> only; anything richer you serialise to JSON yourself. The current API is SharedPreferencesAsync (disk-backed, no cache) and SharedPreferencesWithCache; the familiar getInstance() still works but is now the legacy path. Nothing is encrypted, so keep tokens and passwords in flutter_secure_storage instead. No native setup.
Pure-Dart image processing: decode and encode JPG, PNG, GIF, BMP, TIFF, TGA, ICO and lossless WebP, read PSD, EXR and PNM, plus resize, crop, rotate, filters and drawing. It runs in Flutter, on a server and in a CLI - no dart:ui required. It is noticeably slower than native libraries, so push heavy work through the Command API onto an isolate or the UI thread locks up. For plain photo compression before upload, flutter_image_compress is usually the better fit. MIT, actively released (4.9.x).
Returns the platform's standard directories: temporary, documents, application support, cache, downloads. Without it there is no correct place to put a file - on iOS anything stored in the wrong folder can vanish on update, and whatever sits in Documents gets backed up to iCloud. The catch: not every method exists everywhere. getExternalStorageDirectory and friends are Android-only, getApplicationLibraryDirectory is missing on Android, Linux and Windows, and web is unsupported. Official Flutter plugin, BSD-3.
Opens pdf, docx, xlsx, ppt and zip through the native viewer and sets up a local folder for file storage along the way. It is abandoned: 1.0.7 landed three years ago, the uploader is unverified, and downloads are near zero. Android has changed its storage rules twice since then, so expect surprises on current devices. For the same job take open_filex, which is maintained and exists specifically to fix Google Play requirements and Gradle 8 builds. Android, iOS, macOS, Windows; MIT.
Marked discontinued on pub.dev - the author renamed it to command_it, and that is where development continues. Use command_it for new code; migrating old code is mostly a dependency and import swap. The idea is unchanged: the Command pattern on top of ValueListenable, where each action is an object exposing running, error and result states that the UI listens to without a state-management library. Last version 7.2.2, December 2024; pub detected no license, so check the repo.
Careful: this pub.dev package is abandoned - the last version, 1.0.2+3, is five years old. Since Flutter 2.0 integration_test ships inside the SDK, and the correct wiring is a dev_dependencies entry declaring integration_test with sdk: flutter. Running flutter pub add integration_test pulls the stale external copy instead, which you don't want. The mechanism itself is alive and current: it runs flutter_test-based tests on a real device or emulator and works with flutter drive, Firebase Test Lab and screenshot capture.
Careful: this package is abandoned. The last release, 0.16.0, is four years old, and it was a community wrapper rather than a Mapbox product - the README says so outright. It won't build on current Flutter without patching, and the native SDKs inside are long stale. The living replacement is the official mapbox_maps_flutter from Mapbox itself (Android, iOS, web in public preview), or maplibre_gl if you'd rather stay on the open stack with no token or billing attached. Don't start new projects here; plan a migration for old ones.
Exposes .env variables not just to Dart but to native code too - build.gradle, Info.plist, Objective-C and Swift. That's the whole reason to use it: cases where the platform itself needs the key, like a Google Maps API key in the manifest. The catch: last release July 2023, an idle repo and roughly two thousand downloads a month. Not flagged discontinued, but effectively abandoned. Android and iOS only, with Gradle and Xcode build-phase edits. For Dart-side values take flutter_dotenv or envied.
A NoSQL database for Flutter: async, with queries, composite indexes, full-text search and links between objects - well past Hive whenever you need to select rather than just look up a key. The problem is upkeep: stable 3.1.0+1 is three years old, 4.0 has sat in dev prereleases for years, and the original author has stepped away. For new code look at isar_community (a fork fixing bugs on the 3.x line) or Drift if you're fine with SQL and migrations. The native library builds for every platform, with web via WASM. Apache-2.0.
A meta-package that pulls in every google_mlkit_* at once - barcodes, faces, text, image labeling, pose, translation. Handy for exploring what's available, but almost always wrong in production: each model adds megabytes to the binary and you usually need one. Depend on the specific subpackage instead. Android and iOS only, all on-device with no network. Active - 0.23.1 shipped August 2026, needs Dart 3.12 and Flutter 3.44; iOS builds are arm64-only.
2D physics for Dart: bodies, fixtures, joints, continuous collision - the base layer for platformers and arcade games, and the default choice alongside Flame. Important shift: recent versions bind to native Box2D v3 through build hooks rather than being a pure Dart port, so you need Dart 3.12, native assets enabled and a working C toolchain at build time. 0.15.1 shipped August 2026. Verify your web and CI builds early.
Bottom navigation in Aurelien Salomon's style: the active tab expands into a labelled pill while the rest stay icons. It looks good and drops in with three lines. No updates for three years and, despite a verified publisher, the project reads as closed: 1.1k likes against only six thousand downloads. There is very little code and it is pure Dart, so if it breaks, vendoring it beats waiting for a release. The closest SDK answer is Material 3's NavigationBar with its pill indicator. MIT.
A router over Navigator 2.0 that hides its verbosity: a path map, nested routes, tabs with their own history, real URLs on web. In complicated tab scenarios it feels simpler than go_router - tab state does not quietly reset on you. But the ecosystem consolidated around go_router, which lives in flutter/packages and has far more examples and answered questions. Routemaster is alive, released three months ago and a Flutter Favorite - still, check go_router first on a greenfield project. 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.
State management around injected state: RM.inject and ReactiveStatelessWidget, bundled with DI, a router, forms, i18n and async-state handling - closer to a mini framework than a store. Powerful, but the docs are dense and the learning curve is real. The pressing issue is cadence: the last pub release is dated February 2024 and the 7.0 branch has sat in dev ever since, even though the repo still sees commits. For a new project in 2026 that is a risk - Riverpod or signals are calmer bets.
Reactivity built on signals: signal, computed, effect and batch - four primitives that compose into any business logic. Pure Dart, so it runs in Flutter, a CLI, a Shelf server or the browser. Unlike Riverpod or BLoC there are no providers, containers or codegen: you read a value and dependencies are tracked for you. This is the core package - for widgets add signals_flutter, which pulls this in. Maintained by Rody Davis, 7.x landed in spring 2026, Apache-2.0, requires Dart 3.5+.
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.
One pie chart with an entry animation, a legend and percentage labels: hand it a Map<String, double> and it draws. People pick it when a pie is genuinely all they need and pulling in a full charting library for one screen feels wrong. No updates for two years, but there is little to rot - pure CustomPainter, no native code, verified publisher. The moment a second chart type appears - a line, some bars - move to fl_chart rather than carry two packages. MIT, all platforms.
The Flutter layer over signals: the Watch widget, context extensions like .watch(context), hooks, and automatic teardown on dispose. Only the widgets that actually read a signal rebuild - no Consumer wrappers, no setState sprayed across half the screen. This is the package you add to an app; the core arrives as a dependency. 7.0 reshuffled some of the Watch API, so read the changelog before upgrading. A DevTools extension shows the dependency graph. Apache-2.0, Dart 3.5+.
It is discontinued - that is the headline. The code metrics and extra analysis rules package is flagged discontinued and unlisted on pub.dev: the last open source release, 5.7.6, shipped in July 2023 against Dart 2.18, and the license is undetermined in its metadata. The author moved the work into the commercial DCM product at dcm.dev behind a paid subscription. The free path today is custom_lint plus published rule sets. Do not add it to new projects.
Reads the app version, build number, package name and display name - versionCode on Android, CFBundleVersion on iOS. You need it anywhere the version shows up in an About screen or gets attached to analytics and Sentry events. All six platforms are supported; on web the data comes from a generated version.json, so hosting on a different origin means fixing CORS or passing baseUrl yourself. Part of Flutter Community's plus_plugins set, BSD-3.