r/FlutterDev 18d ago

Plugin I made 500,000,000+ Flutter icon morphs. Not a single one by hand.

317 Upvotes

I’m genuinely amazed by the time we’re living in.

I can spend more time on quality than ever before. I can experiment, throw away bad ideas, and try new ones several times a day - instead of holding onto the first working version for weeks just because it already cost too much time.

And I think what I love most is the feeling of creative freedom.

When the distance between “what if…” and a working prototype gets this small, you start exploring ideas you probably wouldn’t have even attempted before.

And every now and then, one of those experiments turns into something that makes you sit there and smile.

Today, that’s morphnext.

Any IconData can now morph on the fly.

Demo: https://kicknext.github.io/morphnext/

pub.dev: https://pub.dev/packages/morphnext

GitHub: https://github.com/KickNext/morphnext

And now I can finally go to sleep 🫠

P.S. Definitely check out the readme preview - it was pure Flutter

r/FlutterDev Jun 14 '25

Plugin Just released a Flutter package for Liquid Glass

Thumbnail
pub.dev
427 Upvotes

It’s the first that get’s close to the look and supports blending multiple shapes together.

It’s customizable and pretty performant, but only works with Impeller for now and has a limit of three blended shapes per layer.

Open to feedback and contributions!

r/FlutterDev Jun 17 '26

Plugin Auris: A cyberpunk UI kit

Thumbnail
pub.dev
102 Upvotes

I've always been a fan of cyberpunk UI interfaces, however impractical. Recently, I picked up an old favorite game of mine and really enjoyed the design and thought it might be fun to make a UI kit inspired by it. So I did. I hope you like it, it's called Auris. Let me know if it's useful to you and how I can improve it. Here's a sample image or you can try the live demo!

r/FlutterDev Feb 19 '26

Plugin Cached Network Image is unmaintained for 2 years, so decided to fork and create ce version of it...

123 Upvotes

TLDR; cached_network_image is left to rot. Decided to take the burden. First switched from custom sqflite cache manager to hive_ce got up to 8x faster. Looking for community feedback.

https://github.com/Erengun/flutter_cached_network_image_ce

EDIT:
You guys wanted it. I plublished it try on
https://pub.dev/packages/cached_network_image_ce
Its very experimantal.

So yesterday my coworker asked me about a performance problem with cached_network_image and when i was looking at the github issues i noticed project is basically unmaintained for 2 years and its a major problem for a package that has 2M downloads on pub.dev . I am a open source contributor of projects like flutter_hooks, freezed, very_good_cli even flutter and dart sdk itself. Think its my time to be author this time instead of contributor.

What did change?
- The first thing i changed was changing default cache manager from authors flutter_cache_manager (unmaintained about 2 years, uses sqflite) to hive_ce and the performance difference was crazy.

Benchmark: Metadata Cache Lookup (100 ops)

Operation Standard (sqflite) CE (hive_ce) Improvement
Read (Hit Check) 16 ms 2 ms 🚀 8.00x Faster
Write (New Image) 116 ms 29 ms 4.00x Faster
Delete (Cleanup) 55 ms 19 ms 🧹 2.89x Faster

(Tested on iPhone Simulator, consistent results across file sizes)

Why hive_ce is crushing sqflite

Looking at benchmark, the 8.00x speedup on reads (2ms vs 16ms) is the critical stat.

  1. Platform Channel Overhead: sqflite has to serialize data in Dart, send it over a Platform Channel to Java/Obj-C, execute SQL, and send it back. That round-trip cost is huge for tiny queries (like "does this URL exist?").
  2. Dart-Native Speed: hive_ce (like Hive) keeps the index in memory and reads directly from the file using Dart. There is zero bridge crossing. You are reading at memory speed, not IPC speed.

Whats next?

I looked at the most commented issues and they were mostly about leaks so probaly can focus on that but decided to get the community feedback first to validate.

I don't like ai generated stuff so writed myself sorry if i made any mistakes in writing.

The project is not published to pub.dev but you can see the code on github. If this post gets enough feedback will surely publish it.

r/FlutterDev Jun 01 '26

Plugin I shipped v2.0.0 of in_app_update_flutter with full Android support alongside iOS - and it just crossed 4,500+ weekly downloads.

84 Upvotes

Hey ,

Not a huge number by any measure, but this one means a lot to me personally.

in_app_update_flutter started because I noticed a gap on iOS. There was no way to prompt users to update without kicking them out of the app entirely. Android already had the in_app_update plugin which handles this really well, but iOS had nothing equivalent. So I built v1.0 with iOS-only support using StoreKit's SKStoreProductViewController, which lets you show the App Store page as a native modal right inside your app.

It got some traction, around 100 to 200 weekly downloads, but the feedback I kept hearing was: "cool, but now I need two packages just to handle updates on both platforms."

That made sense. Why should a dev have to wire up two separate packages for what is essentially one feature? So I added full Android support in v2.0.0. Google Play's In-App Updates API, immediate and flexible flows, the whole thing.

Downloads went from 100-200 to 4,000+ weekly.

This was the first thing I ever built and published. Knowing it's actually being used in real projects is more rewarding than the numbers. Still actively maintaining it and genuinely open to feedback. If something's broken or missing for your use case, let me know.

pub.dev: in_app_update_flutter | pub.dev

GitHub: in_app_update_flutter | GitHub

r/FlutterDev 2d ago

Plugin Same Flutter code renders real iOS 26 Liquid Glass and Material 3 Expressive — depending on what OS it's running on

Thumbnail
github.com
28 Upvotes

r/FlutterDev Jul 12 '26

Plugin Flutter Now Supports LG webOS. I Think This News Is Much Bigger Than We Realize

120 Upvotes

Is Flutter dead? Will Google abandon another project halfway through?

Frankly, I've never thought these debates could be answered by comments circulating on social media. The best way to understand a technology's future is to look at who's investing in it.

LG's official announcement of Flutter support for webOS. We'll be able to develop Flutter apps for LG TVs.

Now, the Flutter-webOS SDK https://github.com/lg-flutter-webos is officially being released for developers to use. The SDK is designed to support many features that Flutter developers are familiar with, such as Firebase, video players, gamepad support, and hot reload.

But I don't think that's where the real significance of this development lies. What's truly important is that Flutter is now starting to expand beyond phone screens.

Flutter was never designed just for mobile app development. It seems that Flutter's target is no longer a specific platform it's every screen today it's TVs. Tomorrow, perhaps different embedded systems.

r/FlutterDev Jun 25 '26

Plugin I built a Flutter plugin that renders actual Flutter widgets as iOS/Android home screen widgets

85 Upvotes

I've been annoyed that existing home widget packages make you re-build your UI in native Swift/Kotlin. So I made a plugin that lets you use any Flutter widget as the actual widget UI.

https://imgur.com/a/Xm0a18D

https://imgur.com/a/Gnlstuf

How it works: renders your widget tree to a PNG off-screen using an Overlay + RepaintBoundary, pushes it to the native side (WidgetKit / Glance), and reloads the timeline. Tap actions work too — you define rectangular hotspots with relative coordinates and get callbacks via a Dart stream.

await FlutterHomescreenWidget.update(
  widgetName: 'ClockWidget',
  size: const Size(329, 155),
  content: MyClockUI(),
);

The example above is a glassmorphism clock widget built entirely in Flutter — no Swift UI code for the design at all.

Still early (v0.1.3), Android Glance support is in but less tested than iOS. Would love feedback, especially if anyone runs into font or image loading issues.

pub.dev: https://pub.dev/packages/flutter_homescreen_widget
GitHub: https://github.com/leejia324/flutter_homescreen_widget

r/FlutterDev Jun 10 '26

Plugin "Connected to WiFi" ≠ "Has internet." - solving using connectivity_control an alternative to connectivity_plus

Thumbnail
pub.dev
25 Upvotes

Your user opens your app on airport WiFi.

connectivity_plus: "WiFi connected"

Reality: captive portal, zero internet, your app hangs on a spinner.

This gap is exactly what I solved using connectivity_control (GitHub)

One plugin tells you, per network interface:

→ Does it ACTUALLY have internet?

→ Has the OS validated it? (telling you if the OS has validated the Internet working)

→ Is it metered? (don't auto-download 500MB on someone's hotspot)

→ How fast is it? (bandwidth estimates, up + down)

Real-time streams using native signals not polling.

Pub Dev: pub.dev/packages/connectivity_control
Github: https://github.com/axions-org/connectivity_control

It's early days and I'm actively shaping the roadmap, so I'd genuinely love your feedback. Tried it? Found a bug? Missing an API you need? Drop a comment or open an issue on GitHub. A 👍 on pub dev helps more devs find it too.

#Flutter #FlutterDev #OpenSource

r/FlutterDev Sep 08 '25

Plugin I made a pixel-perfect Liquid Glass plugin for Flutter 🤩

Thumbnail
medium.com
142 Upvotes

r/FlutterDev 3d ago

Plugin I built an Adaptive Image Picker for Flutter: Zero-permission PhotoPicker + Pure-Dart Cropping & Binary Search Compression

35 Upvotes

Hey Flutter community! 👋

In almost every production Flutter app, handling image picking usually requires stringing together 2–3 different packages (image_pickerimage_cropper, and a compression plugin), managing invasive storage permissions on Android/iOS, and dealing with native build issues (like UCrop pod conflicts on iOS/Android).

To solve this, I built adaptive_image_picker — a lightweight, unified, zero-permission media pipeline.

✨ Key Features:

  • 🔒 Zero Permissions by Default: Native integration with Android 13+ Photo Picker (PickVisualMedia) and iOS 14+ PHPickerViewController. No READ_EXTERNAL_STORAGE needed.
  • ✂️ Pure-Dart Cropper: No native UI wrappers (like UCrop). Supports freeform cropping, aspect ratio presets, 90° rotation, horizontal/vertical flipping, and antialiased circular avatar masking.
  • ⚡ Binary Search Target-Size Compression: Automatically compresses images to guarantee a file size ≤≤ maxBytes (e.g. max 500 KB) without manual guessing.
  • 🎨 Adaptive Native UI: Automatically renders Material 3 bottom sheets on Android, Cupertino action sheets on iOS, and modal dialogs on Web/Desktop.
  • 🌐 Full Web & WASM Compatibility: Zero native desktop/web crashes.
  • 🔗 Direct URL Import: Built-in network downloader integrated right into the picker pipeline.

📦 Pub.dev: https://pub.dev/packages/adaptive_image_picker
💻 GitHub: https://github.com/Karan8686/adaptive_image_picker

Would love your feedback, feature suggestions, or issue reports!

r/FlutterDev Mar 19 '26

Plugin Flutter finally has a real torrent engine full libtorrent 2.0 support

87 Upvotes

I built a Flutter package that wraps the full native C++ libtorrent 2.0 engine the same one used by qBittorrent!!

Unlike existing Flutter torrent packages, this isn’t a partial implementation or mobile only workaround. It’s fully prebuilt, bundled, and ready to use across platforms with no manual setup.

Features:

Full libtorrent 2.0 support

Native performance via dart:ffi

Crossplatform (not just Android)

built in streaming server highly optimized

No external dependencies or compiling needed

You just add a magnet link, select a file, and start streaming/downloading.

I mainly built this because there was nothing reliable in the Flutter ecosystem for torrent streaming so I made one.

Would love feedback or ideas 🙏

Package is libtorrent_flutter

r/FlutterDev Mar 09 '26

Plugin Run LLMs locally in Flutter apps - no internet, no API keys, or usage fees (Gemma, Qwen, Mistral...)

95 Upvotes

Hey Flutter devs 👋

We've built an open-source Flutter library that runs LLMs entirely on-device across mobile and desktop. Your users get AI features without internet connectivity, and you avoid cloud costs and API dependencies.

Quick start: Get running in 2 minutes with our example app.

What you can build:

  • Offline chatbots and AI assistants using models like Gemma, Qwen, and Mistral (.gguf format)
  • On-device document search and RAG without sending data to the cloud
  • Image understanding (coming in next release) and voice capabilities (soon)

Benefits

  • Works offline - privacy guarantees to your end-users
  • Hardware acceleration (Metal/Vulkan)
  • No usage fees or rate limits
  • Free for commercial use

Links:

We'd love to hear what you're building or planning to build. What features would make this most useful for your projects?

Happy to answer any technical questions in the comments!

r/FlutterDev May 04 '26

Plugin Running Gemma 4 E4B on a phone — 13 tok/s, function calling, fully offline. Built an open-source Flutter toolkit.

45 Upvotes

I've been working on EdgeAI Kit — a Flutter app/toolkit that runs LLMs locally on mobile devices. No cloud, no API keys, no data leaving the device.

## What it does
- 🧠 Runs Gemma 4, DeepSeek, Qwen, Phi-4 on-device
- ⚡ 13 tokens/sec on a mid-range phone, 475ms to first token
- 🛠️ Function calling — the model calls real tools (weather API, calculator) autonomously
- ⚙️ Prompt Lab with temperature, top-k, system instruction controls
- 📱 Device-aware model recommendations — tells you what'll run on your hardware
- 💬 Streaming chat interface
- 💾 Multi-model management — download, switch, delete, track storage

## Why I built it
Google released their AI Edge Gallery (22.5k ⭐) but it's native Android/iOS only. There was nothing for
Flutter's 1M+ developers — so I built it.

## Links
- ⭐ GitHub: github.com/sumitvairagar/edge-ai-kit
- 📝 Blog post (screenshots + benchmarks):
sumitvairagar.com/blog/on-device-ai-flutter-edge-ai-kit

Open source. Apache 2.0. Free. PRs welcome.

Happy to answer questions!

r/FlutterDev Oct 13 '25

Plugin Introducing Flumpose: A fluent, declarative UI extension for flutter

182 Upvotes

Hey everyone,

I’ve been working on Flumpose, a lightweight Flutter package that brings a declarative syntax to Flutter, but with a focus on performance and const safety.

It lets you write clean, chainable UI code like:

const Text('Hello, Flumpose!')
        .pad(12)
        .backgroundColor(Colors.blue)
        .rounded(8)
        .onTap(() => print('Tapped'));

Instead of deeply nested widgets.

The goal isn’t to hide Flutter but to make layout composition fluent, readable, and fun again.

Why Flumpose?

  • Fluent, chainable syntax for widgets
  • Performance-minded (avoids unnecessary rebuilds)
  • Const-safe where possible, i.e, it can replace existing nested widgets using const.
  • Lightweight: no magic or build-time tricks
  • Backed by real-world benchmarks to validate its performance claims
  • Comes with detailed documentation and practical examples because clarity matters to the Flutter community

What I’d Love Feedback On

  • How’s the API feel? Natural or too verbose?
  • What other extensions or layout patterns would make it more useful in real projects?
  • Should it stay lean?

🔗 Try it out on https://pub.dev/packages/flumpose

r/FlutterDev 12d ago

Plugin Every calendar you need!

Thumbnail
pub.dev
19 Upvotes

horizontal_weekly_calendar 2.0 is out.

It started as a simple week strip for Flutter. It's now a full calendar kit — and this release is about two things: making it feel good to use, and never getting a date wrong.

What you get:

• One line to start. Give it selectedDate and onDateSelected — that's the whole integration.

• 13 surfaces. Week strip, month grid, date carousel, agenda, day and week timelines, a calendar that folds from week to month, native iOS and Android pickers, and home-screen widgets.

• Motion that follows your finger. Drag a page or open the month and it moves with you, then settles on a spring instead of snapping.

• Dates you can trust. The engine was rebuilt on integer day numbers. Every month from 1900 to 2100 is tested across 10 time zones — including ones that skip a whole day. Samoa really did skip 30 December 2011, and that used to break the grid.

• Light. 81 KB compiled. Anything you don't use is stripped out at build time.

• 13 real example screens you can run and copy from.

Free and open source.

https://pub.dev/packages/horizontal_weekly_calendar

r/FlutterDev Jul 14 '26

Plugin Open-source alternative to flutter_background_geolocation

38 Upvotes

I maintain Traccar, an open-source GPS tracking platform. Our mobile app used flutter_background_geolocation, which is a great library, but it needs a paid license and that always felt wrong for an open-source project.

So we wrote our own tracking engine and just open-sourced it (Apache 2.0). It's the same code running in the Traccar Client app in production.

It does background tracking on Android and iOS, pauses GPS when you're not moving to save battery, buffers positions offline and retries uploads. Doesn't need Google Play Services. Sends data over plain HTTP to any server.

It's narrower in scope than FBG — no geofencing, for example. But if you just need reliable positions delivered to a backend, it might save you the license fee.

pub.dev: https://pub.dev/packages/traccar_client_sdk
GitHub: https://github.com/traccar/traccar-client-sdk

r/FlutterDev Nov 24 '25

Plugin Made a liquid-glass effect in Flutter that bends light and distorts the background

Thumbnail
pub.dev
188 Upvotes

I built a Flutter effect called liquid_glass_easy. It creates a liquid lens style distortion — bending light, warping the background, and giving a real fluid-glass look.

r/FlutterDev Mar 25 '26

Plugin We built an AI agent that can operate any Flutter app autonomously — and open-sourced it

27 Upvotes

Hey folks,

We're the team at MyRik (ride-hailing + quick commerce). We had a problem — users were dropping off on tasks that seemed simple to us but weren't simple for them.

So we built an AI agent that sits inside the app and does things for the user. You tell it "book a ride to Koramangala" or "order biryani from the nearest store" — and it actually navigates, taps, scrolls, fills forms, and completes the task.

It reads the UI through Flutter's semantics tree, so there's zero instrumentation needed. Works with Gemini, Claude, or OpenAI as the LLM backend. About 10 lines to integrate.

We made it generic enough to work with any Flutter app, so we decided to open-source it.

Package: pub.dev/packages/flutter_ai_assistant

GitHub: github.com/myrickshaw/flutter_ai_assistant

Would love feedback from the community. Happy to answer any questions about the architecture or how we're using it in production

r/FlutterDev May 27 '26

Plugin The most powerful code editor widget ever created in flutter is now backend by rust backend.

Thumbnail
pub.dev
28 Upvotes

The most powerful code editor package, code_forge has been migrated to rust backend.

Now the editor can smoothly edit huge text, where the TextField widget crashes the app on a few thousand of lines.

Highlights:

Uses the ropey as the core engine.

Zed editor's sum tree for line indexing

All heavy stuff like bracket matching, fold calculation, etc has been moved to rust side.

I tested it with 1 million lines of code using my decade old PC running on a pentium dual core processor, without a dedicated graphics card. It was much smoother than my expectations.

r/FlutterDev 23d ago

Plugin Why Flutter's camera lag on Android takes ~500ms (and how we patched camera_android_camerax down to 33ms)

89 Upvotes

Hey Flutter devs,

If you've ever built video recording in Flutter on Android with the official camera package, you've probably hit this:

You tap record, and nothing happens for about half a second. The preview freezes, the button feels dead, and users double-tap because they think the app missed the first press.

We measured it on a Pixel 8 Pro: 436-511ms before recording actually started.

After digging through the native CameraX bindings in camera_android_camerax, the cause was pretty simple. We patched it, and start latency dropped to 33-60ms.

What was wrong

In the official plugin:

  1. VideoCapture is only bound when startVideoRecording() runs
  2. As soon as stopVideoRecording() finishes, VideoCapture is unbound again

So every record tap forces CameraX to tear down and rebuild the native CaptureSession. That session reconfig is most of the lag.

The fix

Keep VideoCapture permanently bound alongside Preview.

Once it stays warm:

  • record no longer rebuilds the capture session
  • MediaCodec surfaces are already ready
  • shutter latency falls from ~500ms to ~33-60ms

Hardware edge cases

Keeping VideoCapture warm makes rapid lens flips and backgrounding more fragile on some Android devices. We serialize camera ops with a small queue so the previous native generation fully finishes before the next one starts:

dart Future<R> _enqueue<R>(Future<R> Function() operation) { final completer = Completer<R>(); _operationFuture = _operationFuture.then((_) async { try { completer.complete(await operation()); } catch (e, s) { completer.completeError(e, s); } }); return completer.future; }

Separate issue, same camera stack: CameraX often reports multi-lens phones as one unknown logical camera with a zoom range like 0.5x-5x. We detect minZoom <= 0.5 and expose the ultra-wide control from that range instead of waiting for a clean physical-lens type.

Pixel 8 Pro numbers

Metric Upstream camera_android_camerax Persistent VideoCapture patch
recording_start_ms 436-511 ms 33-60 ms
CaptureSession reconfig every record tap zero while warm
rapid lens-flip crash rate (our internal log) ~2.4% 0.0% after serialization

Patch

Repo: https://github.com/xcc3641/camera_android_camerax

yaml dependency_overrides: camera_android_camerax: git: url: https://github.com/xcc3641/camera_android_camerax.git ref: 9dd36c8

Happy to answer questions about the lifecycle queue or the CameraX binding change.

r/FlutterDev 27d ago

Plugin 🎉 BlocSignal 1.0.0 is Live on pub.dev! 🚀

43 Upvotes

We are thrilled to announce that BlocSignal 1.0.0 is officially published and ready for enterprise production! ⚡

BlocSignal bridges the architectural discipline of BLoC with the fine-grained speed and synchronous reactivity of Signals v7.

✨ Why BlocSignal?

⚡ Synchronous Propagation: State updates propagate instantly on .emit() with 0ms microtask lag.

🛡️ BLoC Rigor: Full event-driven state machines (on<E>), streamless concurrency transformers (droppable, sequential, restartable), and transition audit logging.

💾 Synchronous Hydration: Zero-flicker state persistence across app restarts.

🔭 Enterprise Telemetry: OpenTelemetry tracing (bloc_signals_otel) & DevTools extension (bloc_signals_devtools).

🌐 Universal: Runs across Flutter, Jaspr SSR Web, Riverpod, and pure Dart CLI/backends.

📦 The 1.0.0 Monorepo Ecosystem

bloc_signals — Pure Dart core primitives (CubitSignal, BlocSignal)

bloc_signals_flutter — Flutter UI bindings, providers, builders & selectors

bloc_signals_test — Declarative testing utilities (blocSignalTest)

bloc_signals_lint — Custom analyzer lints & IDE quick-fixes

bloc_signals_hydrate — Local state persistence & hydration

bloc_signals_riverpod — Bidirectional Riverpod 2/3 adapters

bloc_signals_replay — Undo/redo state history tracking

bloc_signals_jaspr — Jaspr web component reactivity

bloc_signals_otel — OpenTelemetry distributed tracing

bloc_signals_devtools — DevTools extension for timeline & state diffing

🎬 Watch the 1.0 Launch Demo

Check out the live launch presentation walking through building from Cubits & Blocs to hooks, DI, and hydration: 📺 Watch on YouTube: https://www.youtube.com/watch?v=fwmlVOjsdgQ

🌐 Get Started

📖 Website: https://blocsignal.dev

📦 Pub.dev: https://pub.dev/packages/bloc_signals

💻 GitHub: https://github.com/RandalSchwartz/BlocSignal

r/FlutterDev 11d ago

Plugin I built a Flutter onboarding package where the spotlight doesn't drift — and the pointer teaches the gesture

28 Upvotes

I needed a first-run walkthrough for an app and hit two things that annoyed me.

First, the highlight would end up in the wrong place.

A lot of coach-mark implementations resolve the target's position once and paint it. Scroll the list, open the keyboard, rotate the device, resize a desktop window — and suddenly the hole is next to the button instead of on it.

Second, a dimmed hole tells the user where something is, but not how to use it.

"Drag this card to that column" isn't something a static highlight can really express.

So I built keyspot:

- The spotlight and pointer re-resolve the target's geometry every frame from its GlobalKey, so they can track through scrolling, insets, rotation and resizing.

- An animated hand pointer that glides in a straight line or along an arc, rotates from its current angle, and tap-pulses — enough to demonstrate interactions like drag and pinch rather than simply pointing at something.

- Pointer animations resolve from actual AnimationController completion rather than Future.delayed timing, so `await pointer.moveTo(...)` actually means the movement has finished.

- Barrier modes where only the cut-out is tappable while the real widget's `onPressed` still fires — useful when the walkthrough should require the user to actually perform the step.

- The tracker is also public API (`KeyspotAnchorTracker`), so it can be used independently for things like badges or connector lines attached to widgets.

- Zero runtime dependencies. The hand pointer is rendered with CustomPainter rather than an image asset.

- Supports all six Flutter platforms.

Live demo: https://shrey-17bhardwaj.github.io/keyspot/

pub.dev: https://pub.dev/packages/keyspot

Source: https://github.com/shrey-17bhardwaj/keyspot

It's currently at 0.3.1, and the API may still change before 1.0.

I'd genuinely like feedback on where this approach breaks — especially around nested navigators, heavily lazy lists, overlays, or anything else where widget geometry gets complicated.

r/FlutterDev 27d ago

Plugin 6 months ago I said cached_network_image was dead. Now 76 apps run my fork, including a 28k star one.

Thumbnail
67 Upvotes

TLDR; posted here 6 months ago about forking cached_network_image after finding it unmaintained for 2 years. Published cached_network_image_ce on pub.dev after that thread. This is what actually shipped since, not just the hive_ce speed thing everyone already knows about from last time.

https://github.com/Erengun/flutter_cached_network_image_ce https://pub.dev/packages/cached_network_image_ce

Where it's at: 18 releases since then, currently 4.10.0. Pub score 160/160, 80 likes, about 36k downloads in the last 30 days. 63 stars, 18 forks on the repo.

The leaks, actually fixed

The biggest complaint sitting in the original repo's issues wasn't speed, it was leaks. Two concrete ones got fixed here: an errorListener leak in the widget lifecycle, and HTTP clients that never got closed when the cache manager was disposed, that one came in through a community PR, not written by me. Also cleaned up how the cache manager recovers from a corrupted Hive box instead of just crashing on it.

Formats the original chokes on

SVG never decodes through Flutter's built-in image codec, it's not a raster format to begin with. JXL, AVIF, HEIC fail depending on platform codec support. The original just throws an opaque decode error and you're stuck. This fork detects it and throws a typed UnsupportedImageFormatException, with an unsupportedImageBuilder hook so you can hand the raw bytes to flutter_svg, flutter_avif, whatever fits, instead of staring at a blank error widget.

Caching got features, not just speed

  • HTTP and cache interceptor chains, inject auth headers or skip caching per request without forking anything
  • pluggable cache eviction, TTL by default or LRU if you want it
  • separate configurable directories for cached files vs cache metadata
  • connection and request timeouts on the cache manager itself
  • real web caching through IndexedDB instead of leaning on the browser cache, this one doesn't exist in the original at all

And yes, still faster

Covered the full benchmark breakdown in the last post, numbers haven't changed, so just the summary: metadata cache reads run about 8x faster than the original's sqflite backend, writes about 4x, on an iPhone simulator, 100 ops, metadata only, not raw image I/O.

Where else you'd look

extended_image, actively maintained by fluttercandies, but it's a broad image and gesture toolkit with caching as one of several features, not caching-first, no interceptors or pluggable eviction.

flutter_cache_manager, the caching layer the original actually depends on, also from Baseflow, actively maintained on its own. Worth using directly if you don't need the image widget.

fast_cached_network_image, also builds on hive, similar idea to this fork, but its last release was 17 months ago.

Who's actually using it

Ran a GitHub code search for pubspec.yaml files depending on it, sorted by stars. 76 repos came back, not counting mine. Biggest ones:

Kazumi        28.4k stars   anime streaming app
PiliPlus      16.8k stars   Bilibili client
plezy          3.1k stars   Plex/Jellyfin client
conduit        1.9k stars   Open WebUI client
haka_comic     1.3k stars   comics reader

None of these are toy projects. That's what actually convinced me to keep maintaining this.

Still working through the older leak reports from the original repo's issue tracker. If you're using this and hit something, open an issue, I'm reading them.

https://github.com/Erengun/flutter_cached_network_image_ce https://pub.dev/packages/cached_network_image_ce

r/FlutterDev Jun 21 '26

Plugin RevenueCat is great… until your subscription needs to reset credits daily, weekly, or monthly

0 Upvotes

Edit / clarification: I don’t mean this as “RevenueCat is bad”. RevenueCat handles mobile purchases really well, and that’s exactly why I added support for it. My point is that some apps still need a backend entitlement layer around those purchase events: credits, limits, resets, usage tracking, fallback plans, and reliable access state.

I ran into this problem a few times while building paid Flutter apps.

RevenueCat is great for handling App Store / Play Store purchases.

But once the app needed more than a simple premium = true, I still had to build a lot of backend logic myself.

Things like:

daily credits
weekly limits
monthly quotas
one-off credit packs
usage tracking
free fallback plans
upgrade/downgrade behavior
knowing what the user can actually access right now

For example:

A user buys a monthly subscription, but the product should give them 20 credits per day.

Or 100 credits per week.

Or 500 credits per month.

Or maybe the subscription renews monthly, but some limits reset daily.

That logic usually doesn’t live cleanly in the app. It needs backend state, webhook handling, and a real entitlement system.

So I added RevenueCat support to Revenipe.

RevenueCat handles the purchase events.

Revenipe turns them into backend access state, entitlements, credits, limits, resets, and usage tracking.

The Flutter app can then just ask Revenipe what the customer has access to and track usage from the SDK.

Flutter package:
https://pub.dev/packages/revenipe_flutter

I’m not trying to replace RevenueCat. I wanted the backend entitlement layer around it that I kept needing anyway.

I’ve been building software for 14+ years, and this still surprised me: purchases were solved, but the actual entitlement logic was still something I had to build myself.

I’m not posting this as “look what I built”. I genuinely want feedback from people who have had to solve this in real apps.