r/FlutterDev • • 19h ago

Tooling Letting your agent test the Flutter app it just wrote: looking for feedback

1 Upvotes

I’ve been working on Argent, an open-source MCP server that lets your agent (Claude Code, Codex, Cursor, etc.) use your app on the iOS/Android/web. It can tap through flows, read logs and network calls, take screenshots, aaaaand many more πŸ˜‚ That way it can check its own changes instead of just saying it’s done

I know I know, it comes from the React Native world and we have some beef πŸ˜… But this one is truly cross-platform and works with Flutter apps too! If you’re letting an agent drive your Flutter app, what’s working, and where does it fall apart? We really want to keep improving it for every framework!! 🀭


r/FlutterDev • • 19h ago

Plugin I built an open-source sync engine for offline-first Flutter apps . looking for feedback

5 Upvotes

Hey everyone! πŸ‘‹

I've been working on SyncForge, an open-source synchronization toolkit for Dart and Flutter, and I'd love to get feedback from other developers here.

One of the challenges with offline-first apps is handling what happens when users make changes without a connection, multiple devices edit the same data, or an app needs to recover queued writes after restarting.

SyncForge is my attempt to make that synchronization layer modular and reusable instead of rebuilding it for every project.

The project consists of three packages:

- "sync_engine" β€” A pure-Dart core with vector clocks, CRDT primitives, conflict-resolution strategies, and a retryable outbox.

- "sync_engine_drift" β€” Persistent storage using Drift/SQLite, including outbox durability and tombstone tracking.

- "sync_engine_generator" β€” Code generation for strongly typed synchronization adapters using "build_runner".

The architecture is designed around pluggable storage and transport, with retry backoff, jitter, and dead-letter handling.

πŸ“¦ Package: https://pub.dev/packages/sync_engine

πŸ’» Source code: https://github.com/Wolfof420Street/flutter_sync_engine

πŸ“– Architecture and examples: https://billodida.dev/projects/syncforge

It's still early-stage, so I'm not presenting it as a battle-tested production solution. I'm looking for developers who are interested in offline-first architecture and willing to challenge the design, try the examples, or point out gaps.

I'd particularly appreciate feedback on three things:

  1. Would you use a reusable sync engine like this, or do you prefer implementing synchronization within each application?

  2. What would you want to see before trusting a library like this with real application data?

  3. Which conflict-resolution or synchronization scenarios do you think are hardest to get right?

Constructive criticism is very welcome. I'm building this in the open and would love to learn from developers who've dealt with synchronization in real projects.

Thanks for taking a look! πŸ™Œ


r/FlutterDev • • 11h ago

Dart Shipping a puzzle game in plain Flutter (no Flame): vector art as Dart data, an A* solver for hints, and a test that bans magic numbers

0 Upvotes

I just shipped Boba Sort, a water-sort puzzle (bubble tea, 500 levels, 17 eras of Japanese history) built with plain widgets and CustomPainter, no game engine. A few things that worked, and a few trade-offs, in case they help someone.

**1. All the art is data, not images**

There are no image assets at all. Each era has a full-screen scene, a cup design, a mascot costume and a customer, and I design them as SVG inside an HTML mockup. A small Python script reads named SVG groups and writes Dart lists:

final jomonBackdrop = <VShape>[

VCircle(292, 190, 54, fill: Palette.jomonSun),

VPath('M0 330 Q60 262 132 300 Q206 236 276 288 ... Z',

fill: Palette.jomonFarMountain),

...

];

`VShape` paints fill then stroke, like SVG, and `VPath` parses the `d` string once and caches the `Path`. All 17 eras Γ— 4 kinds of art come to about 240 KB of generated Dart, stay sharp on any screen, and colors can only come from named palette entries (the script refuses anything else).

Because scenes sit behind the cups, a test renders every backdrop and checks each pixel's luminance stays inside a window (light eras β‰₯ 0.662, dark ≀ 0.0395), which keeps the cup outlines at β‰₯ 7:1 contrast wherever the cups land.

**2. Toppings: draw the vector once, then blit sprites**

Each drink has a topping (pearls, grass jelly, red bean...) drawn as vector art, and the top-layer pieces drift idly. A full board can have 200+ pieces, and redrawing that much vector art every frame is wasted work. So each topping is rasterized once per size into a `ui.Image`: sizes are bucketed to 4 physical px, kept in a 48-entry LRU (a plain insertion-ordered Map: remove + re-insert on hit, evict and `dispose()` the first key), and each frame just draws images.

**3. The rules are pure Dart, and an A* solver does the heavy lifting**

`lib/core` never imports Flutter: model, rules, level generator and solver are plain Dart with unit tests. The solver is A*, with each cup packed into one int (8 bits per layer) so states hash fast.

The 500 levels are generated offline: deal random cups, solve, score difficulty from moves, dead ends and branching, keep the median of 8 candidates, or the hardest of 32 for the "hard" levels in the sawtooth curve.

Hint uses the same solver at runtime, on the UI thread, with a 100k-node budget (about 0.4 s worst case in debug). Every bundled level is generated under that budget, so Hint always works from the start. One surprise: "Add cup" makes hints much slower, since an extra empty cup blows up the branching, so the hint search drops surplus empty cups first and only searches the full board if that finds nothing. If I raised the budget I'd move it to an isolate.

**4. A test that fails on magic numbers**

Every spacing, font size, radius and color is supposed to come from tokens. A test scans `lib/features` and `lib/theme` and fails on raw numbers inside `EdgeInsets`, `SizedBox`, `fontSize`, `BorderRadius` and `Color(0x...)`, with an escape hatch: a `// tokens: allow β€” <reason>` comment. Painters are exempt, since their numbers are geometry. It is a dumb regex-and-parentheses scanner, but it kept the UI consistent through a lot of screens.

**Stack:** Riverpod (thin providers), shared_preferences, google_mobile_ads, Firebase Analytics / Remote Config / Crashlytics, audioplayers.

Play Store, if you want to see the result: https://play.google.com/store/apps/details?id=com.harbourlab.bobasort&referrer=utm_source%3Dreddit_flutterdev%26utm_medium%3Dsocial%26utm_campaign%3Dlaunch

Happy to go deeper on any part. I'm curious how others handle heavy CustomPainter scenes.


r/FlutterDev • • 17h ago

Discussion I don't recognize my own app anymore

17 Upvotes

I've been doing Flutter for about 5 years and for the last 6 months Claude Code has written most of our app. I still review everything, coderabbit / claude review catch the obvious stuff first and I read what's left, so it's not like nobody looks at it.

Yesterday a user reported that the checkout screen freeze on older Android phones and I opened the file and genuinely didn't recognize it. 1,400 lines, three different state approaches in one widget tree, a Riverpod provider I had never seen before that apparently I approved in August.

I ended up asking the agent to explain my own screen to me. It fixed the freeze in ten minutes, which made it worse somehow.

The app is about 80k lines now and I think I could explain maybe a third of it.

Is anyone else maintaining a Flutter app they didn't really write?


r/FlutterDev • • 22h ago

Article Struggling to Find Issues in Your Flutter Project? Meet flutter_auditor

Thumbnail
medium.com
0 Upvotes

r/FlutterDev • • 6h ago

Plugin Flutter power

1 Upvotes

Hi there, I'm a software developer and this is my first time using Flutter. As of today, I've made a lot of progress on a mobile game, but I'd like to know how far Flutter can be pushed. Do you guys know of any games built with it on the Play Store, or any famous ones?


r/FlutterDev • • 15h ago

Discussion I want to learn flutter and app development deeply

5 Upvotes

Hi Flutter community!Β 
I'm a beginner in Flutter and I've been learning how to implement widgets and state management and more while building some hands-on projects.

I'm eager to dive deeper into Flutter and mobile dev in general. Any recommendations for good books, blogs, or video tutorials to help me keep growing?


r/FlutterDev • • 22h ago

Plugin Introducing universal_bluetooth_classic!

5 Upvotes

Hi all,

We've just released 1.0 of our universal_bluetooth_classic Flutter plugin, a Bluetooth Classic package that works across Android, iOS, macOS, Windows & Linux.

iOS developers in the house might be aware that using Bluetooth Classic on iOS is no picnic. It requires peripherals to be MFi-certified, and the whole communication has to go through Apple's EAAccessoryManager. As far as I can tell, universal_bluetooth_classic is the only plugin that supports Bluetooth Classic on iOS.

We have been using it in production for a while now so you can consider it battle-tested. Happy to receive issues and PRs.

If instead you are looking for a Bluetooth LE plugin you can have a look at universal_ble which just hit 3.0!


r/FlutterDev • • 5h ago

Discussion App challenge (300$)

0 Upvotes

So there is a challenge going on with an app in my local area, The owner of the app said that if anyone can find a code he mentioned, in the app he will give u 300$ his app is a services app will u can find people to do a service for u, so what do guys think where the code is located in the app ? he posted this for public not Developers so i assume its easy its laying there somewhere in the Ul or maybe u need to search something in the app so the code comes up from the database?, ive uploaded the Apk file to claude but no luck, What are some ways i can use to find this code ?

the app is developed with flutter