r/FlutterDev

I built LaunchShots — a free in-browser App Store screenshot maker because every alternative is paywalled
▲ 21 r/FlutterDev+3 crossposts

I built LaunchShots — a free in-browser App Store screenshot maker because every alternative is paywalled

Hey r/SideProject 👋

I'm an indie dev and every time I shipped an app I'd lose a weekend resizing screenshots, translating captions by hand, and re-exporting per device size. The Mac apps that automate this either cost $30/month or watermark the export until you upgrade.

So I built the tool I actually wanted: https://launchshots.app

What it does:

  • 8 device frames (iPhone 15 Pro, Pixel 9, Galaxy S24, etc.)
  • 19 languages with one-click Google Translate
  • Templates for common categories (fitness, finance, food, etc.)
  • Drag-to-zoom callouts you can move anywhere
  • Annotations (arrows, "NEW" badges, labels) — drag, rotate, recolor
  • Image stickers for logos/mascots
  • Multi-screen with reorder + duplicate
  • Export single PNG or full ZIP (every screen × every language)

It's a single HTML file. Everything runs client-side — your screenshots never leave your browser. No login, no watermark, no analytics, no tracking.

Open to all feedback — especially from folks who've actually shipped to the App Store. What did your screenshot workflow look like before? What's missing here?

u/Significant_Job_9999 — 12 hours ago

Blown away by the Flutter presentation at Google IO

There is so much great stuff going on:
- swift package manager
- app extensions
- multi-window support on desktop (wish it was stable)
- the break out of UI-libraries from core
- embedded applications
- dart serverless functions
- genUI
- ai skills

Also great to see how invested Google is in using Flutter.

I am super excited about all of this. Really looking forward to building interesting stuff this year.

Any lovers or haters out there who’d like to chime in?

reddit.com
u/Comprehensive-Art207 — 14 hours ago

What are your favorite Flutter/Dart developer blogs to read?

Flutter devs who actually like reading, what blogs genuinely make you a better developer?

I want to read some super interesting Flutter-related blogs, engineering writeups, architecture discussions, rendering/deep dive stuff, or just technical articles that are actually worth reading.

But honestly, searching on Google has become painful because it’s filled with low-effort AI content and generic tutorials repeated everywhere.

So yeah, what are some Flutter/Dart blogs you genuinely enjoy reading? Do we even have some really good blogs that still feel written by real developers?

reddit.com
u/AdPractical3688 — 14 hours ago
▲ 3 r/FlutterDev+2 crossposts

Mac for Flutter

Which Mac product do you prefer for flutter ( mobile application ) development ? Something affordable and high performance.

Someone suggested:

MiniMac M4

Macbook Air M4

MacBook Pro M3

I like hear u guys

reddit.com
u/MasterpieceCapable — 1 day ago

universal_ble now supports advertising!

Universal_ble has reached 2.0 and now supports advertising! You can make your device act as a BLE peripheral and let other devices scan for it and connect. That was a long requested feature and I am happy (and relieved 😅) to finally have it delivered. Some major refactoring was needed, but thankfully we did almost no breaking API changes! Migration from 1.0 should be straightforward.

Along with the above, 2.0 brings support for SPM on Apple platforms and full Flutter 3.44 compatibility!

u/fotidim — 1 day ago

Quick question for the community. Curious how other Flutter devs handle this:

You ship a new feature. It passes review. Within hours, you see crashes in production for a specific device/OS combo.

Your options today:

Fix the bug, resubmit, wait 24+ hours for Apple. Users keep crashing.

Push hotfix to Android, hope iOS users don't complain.

Neither feels good.

Sometimes I wonder if there should be a tool that combines feature flags with crash reporting — so when you see a crash spike in your dashboard, you could just turn off the broken feature with one click, no app release needed. Maybe something like this already exists and I haven't found it?

Two questions:

How do you handle this today? Server-side workarounds, kill switches you built yourself, or just live with the App Store delay?

If a one-click solution like that existed, would it actually be useful, or is the problem more nuanced than I'm making it sound?

Genuinely curious how others approach this.

reddit.com
u/Automatic-Gas-409 — 1 day ago
▲ 4 r/FlutterDev+1 crossposts

Need architecture advice for a mobile app feature.

Requirement:
Track per-user screen usage (Flutter app), identify least-used or never-used screens, then trigger automated WhatsApp engagement (currently likely using WATI).

Question:
Would you build custom backend tracking + analytics for this, or use platforms like CleverTap / MoEngage / Mixpanel / Firebase?

Need scalable but not over-engineered solution.

Would love practical experiences.

reddit.com
u/Fine_Zebra3278 — 1 day ago

Open-sourced today: flutter-dev-agents — an MCP server for testing Flutter apps on real iOS and Android devices

Hey r/FlutterDev. Solo dev, been shipping Flutter apps for a few years. Posting because I open-sourced something today that I genuinely couldn't have launched without it being already battle-tested for a month against my own apps.

The thing that broke me.

You know that bug where the Android permission dialog button changes wording across OS versions — "Allow" on Android 13, "While using the app" on 14, and in Polish it's "Podczas używania aplikacji" but encoded with NBSP between words, so your tap_text fails byte-equality silently and the test just hangs there pretending everything's fine?

I lost half a Sunday to that one. Different version on iOS 17 vs iOS 26. The fix isn't hard, but the diagnosis is hours of "why is nothing happening" because the screenshot still shows the dialog and the logs still say "Tap dispatched" and the test still passes its 30-second wait. Selector maintenance was eating ~40% of my testing time and I was getting bitter about it.

What I built.

flutter-dev-agents — an MCP server that lets autonomous agents (Claude Desktop, Claude Code, Cursor, any OpenAI-compat local LLM) drive my Flutter apps on real Galaxy S25s, real iPhone 15s, Pixel 8 emulators, iPhone 17 simulators, whatever's plugged in. 110 tools across:

  • Android: uiautomator2 + raw adb fallback (Samsung One UI sometimes drops accessibility taps; adb-shell input bypasses that).
  • iOS: WebDriverAgent on the device, pymobiledevice3 for lockdown services. The iOS 17+ --rsd routing through tunneld's HTTP API took me a weekend to debug — it's now documented as an ADR so nobody else has to.
  • Flutter-specific: Patrol integration, flutter run --machine for hot-reload control, debug-log streaming, widget tree dumps.

The tap_text thing I described above? Fixed properly now — NFC normalization plus folding NBSP/NNBSP/thin-space/zero-width-space, with case-fold fallback in substring mode. tap_text("Podczas używania aplikacji", system=True) just works regardless of which Unicode whitespace variant the Android Settings team decided to ship that week.

What's genuinely different vs other mobile MCPs

I checked the existing landscape before posting — there are mobile MCPs out there. Most are iOS-simulator-only (mobile-next/mobile-mcp, ambar/simctl-mcp), or Android-only (martingeidobler/android-mcp-server), or Figma→Flutter codegen (mhmzdev/Figma-Flutter-MCP, different use case).

What this one does that I didn't find elsewhere:

  • Cross-session device locks: I run 3 Claude Code windows at once, one per project, sometimes on the same physical device pool. Filesystem-coordinated locks mean window 2 doesn't grab the S25 while window 1 is mid-tap. Stale-lock cleanup when a holder process dies.
  • Tiered tool surface: 110 tools is too many for Claude Desktop's UI ceiling and Cursor's 40-tool cap. MCP_TOOL_TIER=basic exposes a curated 26-tool subset. Small local LLMs (Qwen 3B class) work with the basic tier; larger models get the full catalog.
  • Defense-in-depth screenshot pipeline: Anthropic's API rejects images > 2000px on any edge. I hit this three times in production before getting the cap pipeline right. Now: per-use-case cap at 1600px, dispatcher safety-net at 1900px, BASIC-tier compress_png + inspect_image_safety so the agent has a recovery path even when an external MCP (computer-use, raw adb screencap) feeds in a 2400px PNG.

Honest gaps I'm not pretending don't exist

  • iOS device control needs Xcode → macOS-only for iOS work. Linux is fine for Android-only.
  • I'm a solo maintainer. PRs welcome, co-maintainers especially.
  • No hosted SaaS planned. The MCP protocol is local-first; SaaS would break the security model. Documented in the ROADMAP's "Not on the roadmap" section.
  • Patrol-dependent for true UI tests on Flutter. If you're not using Patrol, you get device-level control (taps, screenshots, logs, app lifecycle) but not Flutter-aware test orchestration.

Try it (genuinely 5 minutes)

pip install mcp-phone-controll
claude mcp add phone-controll -- python -m mcp_phone_controll

Then in Claude Code:

Using phone-controll, run mcp_ping, pick my Android device, take a screenshot.

You should see three tool calls returning ok: true and a PNG in ~/.mcp_phone_controll/sessions/. If anything's red, the structured next_action field tells you what to do — that's the whole MCP contract.

Links

GitHub: https://github.com/michal-giza/flutter-dev-agents
PyPI: https://pypi.org/project/mcp-phone-controll/
15-min onboarding: https://github.com/michal-giza/flutter-dev-agents/blob/main/docs/GETTING-STARTED.md
The 4 operational gotchas that cost me an hour each the first time: https://github.com/michal-giza/flutter-dev-agents/blob/main/docs/operational-gotchas.md
Roadmap: https://github.com/michal-giza/flutter-dev-agents/blob/main/ROADMAP.md
u/msquaregiza — 1 day ago

Interactive particles text effect

While I was testing an interactive particle effect on a web project, I thought it would be really cool to try it in Flutter. So I implemented it, and the result is amazing!! Super smooth and satisfying to interact with. I honestly didn’t expect Flutter to handle this many particles so well.

Watching the text break apart and come back together feels really cool.

Tweak the live demo here (hover or drag to scatter letters & they spring back into place):

- https://particles-text-flutter.vercel.app

Source code:

- https://github.com/YeLwinOo-Steve/particles_text

reddit.com
u/tuco_ye — 1 day ago

I am super excited to announce my Flutter port of Tiptap is now live on pub.dev.

The point of Tiptap's port to Flutter is to maintain crossplatformability between flutter and web. If you have a web app that uses tiptap. And you make flutter app then you will not be able to sync between flutter and web. Because tiptap uses its own custom format for rich text. So the only way to fix this is to have tiptap on flutter as well.

Hence this project.

Demo,

https://raw.githubusercontent.com/blackcoffee2/tiptap-flutter/main/media/demo.gif

Repo links,

https://github.com/blackcoffee2/tiptap-engine https://github.com/blackcoffee2/tiptap-flutter

pub.dev
u/cryogen2dev — 2 days ago

I feel like I spend more time reading than actually coding

Hey everyone, I’m currently learning Flutter, and I honestly really like the framework. I can clearly see myself improving day by day. But whenever I start learning something new, like databases for instance, I end up spending a huge amount of time reading documentation and asking ChatGPT about the things I don’t understand.

Sometimes I spend a very long time just reading ChatGPT answers so I can fully understand even a simple query I wrote. I feel like reading and trying to understand things takes up around 80% of my study time, while actual coding only makes up 20%.

So I’m wondering: is this normal? Is this actually the right way to learn, or does it mean my learning curve is progressing too slowly? And is there maybe a more effective way to study that I can rely on?

reddit.com
u/Fun-Corner8617 — 3 days ago
▲ 64 r/FlutterDev+11 crossposts

Eric Seidel (co-founder of Flutter) is speaking at a Flutter conference may 27th in SF: free livestream

hey, lydia from the FlutterFlow team!

Eric Seidel built Flutter at Google. he's now building Shorebird and has been inside the tool that underpins most of what this community ships longer than almost anyone.

he's on stage at FFDC on may 27th in San Francisco for a session called Flutter Insights with Abel Mengistu (FlutterFlow, YC W21) and Abdallah Shaban (product at Google and co-founder of Celest (YC W24)).

three founders who built on the Flutter foundation and then went to build further are going to be sharing next steps with Flutter!

free livestream. in person at The Midway, SF. ffdc.io

— lydia, FlutterFlow team

reddit.com
u/CommunityTechnical99 — 3 days ago

[Flutter Desktop] How to configure url_launcher to open external apps via Custom URI Scheme

I want to launch other applications using a (Custom URI Scheme). If running commands via Terminal/CMD like

start betterchat://conversation?id=something 

or typing betterchat://conversation?id=something into a browser works, but using the url_launcher package does not respond, the issue usually lies in how the URI string is handled on desktop platforms.

reddit.com
u/HumboldtBudo — 2 days ago

package:keepass: a Rust-backed KeePass and KeePassXC Flutter plugin

I've been working on a KeePass package for about two years but haven't been as diligent about publishing updates to pub.dev as I have been with pushing commits to github. I've dedicated some time this past month to polishing the set of packages for publishing and would like to share a few new tools for interacting with KeePass and especially KeePassXC KDBX vaults:

Most people will want to use keepass_flutter, which builds its library 'automatically' with cargokit (provided Rust etc are installed), whereas the keepass and keepass_web packages require you to build or otherwise provide the library yourself at this point.

I made this package for three main reasons:

  1. I maintain multiple KDBX vaults and wanted a tool capable of merging databases that only keeps the latest entries, safely archiving the old entries 'just in case'.

  2. I wanted more platforms: KeePassXC doesn't support web or iPad, so I made these specifically in order to cover all platforms, including browser extensions.

  3. I wanted YubiKey Challenge-Response capability and this wasn't clearly available via existing packages.

Future TODOs include:

  • Migrate from cargokit to native_assets_rust once Dart Native Assets launch in an unexperimental form
  • Publish prebuilt binaries for package:keepass and package:keepass_web as an option for users that want to skip building
  • Make sure the prebuilt binaries mentioned above are all reproducible
u/sneurlax — 3 days ago

Expectations from Google I/O regarding Flutter?

Hello everyone,

What are your expectations for Flutter Community this year from Google I/O? Will we see finally decoupling in action (being released) because they work on this for how much now? Half a year, a year? iOS 26 native widgets?

reddit.com
u/igorce007 — 4 days ago

The Sliver widgets in Flutter might be the most slept-on tool for building scroll-driven UIs in the whole framework

What they do is let you build custom scrollable layouts where each child controls its own scroll behavior and geometry. That might not sound like a big deal but it is — because it means you can have headers that pin, sections that shrink, and lists that collapse all in one scroll view without hacking anything together. Its performant in a way that most nested scroll approches aren’t.

I think the reason nobody uses them is the API looks kind of intimadating at first. You implement a SliverPersistentHeaderDelegate and override build and maxExtent and minExtent, and your dealing with shrinkOffset and overlap values to drive your UI. Coming from ListView brain it feels foriegn. But once it clicks it clicks.

stuff like collapsing app bars with custom content, sticky section headers, parallax hero images at the top of a scroll view — anything where you’ve got scroll-driven UI that needs to feel native and smooth. people oftentimes reach for NestedScrollView with a bunch of workarounds for this kind of thing and it works but Slivers are doing it cleaner and cheaper under the hood.

Honestly the Flutter docs don’t do it any favors. The example they give is not exactly inspiring. But if you go look at how the actual Flutter team uses it internally (SliverAppBar is built on it) that’s where it starts to make sense.

Anyway if ya’ll never looked at it, worth 20 minutes. Might save you from a janky NestedScrollView solution next time you need somthing like this. I personally didn’t know about this until recently

Has anyone actually used custom Slivers in a real project??? Curious what the use case was. And are there other widgets like this that feel to intimidating on the surface but are worth digging into?”

reddit.com
u/RutabagaLow6979 — 4 days ago
▲ 23 r/FlutterDev+1 crossposts

After 3 years of tab-switching between flutter localization files, I finally built the thing Xcode has had since 2023

A scene that I bet half of you recognize:

It's Friday afternoon. You add a new key to app_en.arb. Then app_ar.arb. Then app_ku.arb, app_fr.arb, app_es.arb. You're four tabs deep, you've already lost track of which file you're in the build that says "login_button" because you missed one.

The format isn't the problem. ARB is fine. The problem is that you're editing N parallel files when you should be editing one grid.

Apple solved this for iOS in 2023 with String Catalogs — one file, one editor, every locale as a column. It's so much better that going back to parallel .arb files feels primitive.

So I built it for Flutter. It's called Stringboard, it's a VS Code extension, it's free, MIT, no telemetry, no cloud, no account.

v0.1 is intentionally minimal. What's on the v0.2 candidate list:

  • EasyLocalization JSON support
  • Search/filter bar across keys
  • "Add language" button to scaffold a new locale
  • Add button for new key record
  • Right-click "Edit in Stringboard" on .arb files in the explorer
  • CSV import/export for handing strings to human translators

Genuine question for this sub: if you had to pick ONE of those for v0.2, which would actually save you time? I'd rather build the one thing you'd use weekly than ship five features nobody asked for.

Links:

Happy to answer anything about the implementation

u/Ok-Net4959 — 4 days ago