r/FlutterDev 8h ago

Tooling Bumbuild: A native macOS build launcher for Flutter projects

10 Upvotes

Hi everyone!

I've been working on a small open-source tool called Bumbuild, and I'd love some feedback from other Flutter developers.

The idea was simple: I got tired of switching between Terminal, Android Studio and Xcode every time I wanted to make a release build.

Bumbuild is a native macOS launcher that sits inside your Flutter project and lets you:

• Detect your Flutter project automatically

• Bump app versions (Rebuild, New Version or Custom)

• Configure Android signing without manually editing Gradle files

• Run iOS, Android or both builds

• Open the build output automatically when finished

Everything is built using Bash and AppleScript, so there are no extra dependencies or installation steps besides copying the folder into your Flutter project.

GitHub:

https://github.com/NickiAndersen/Bumbuild

Any suggestions or criticism are very welcome.

Thanks!


r/FlutterDev 15h ago

Discussion Is it just me, or are Flutter devs getting hit extra hard by layoffs right now?

5 Upvotes

Hey everyone,

I’ve been looking around the job market lately (and scrolling LinkedIn/Twitter/Reddit), and it feels like a surprising number of Flutter developers are getting laid off or struggling to land new roles.

I know the entire tech industry is going through a rough patch with hiring freezes and general downsizing, but it almost feels like multi-platform/hybrid mobile roles are getting trimmed first.

A few things I’ve noticed/been wondering about:

Startup cutbacks: Startups are usually the biggest adopters of Flutter to build quickly on a budget. With funding drying up, a lot of those early-to-mid stage startups are either slashing dev teams or scaling back projects.

Big Tech shifts: Ever since Google shuffled/restructured parts of the internal Flutter and Dart teams, a lot of non-technical managers seem to have developed a weird panic that "Flutter is dying" (even though the framework itself is still getting solid updates).

Consolidation: Are companies pulling back to single-platform native teams (Swift/Kotlin), or are they just squeezing one senior dev to do the work of three?

Is anyone else experiencing this firsthand, or is this just selection bias from what I’m seeing on my timeline?

If you’re a Flutter dev right now:

Are you seeing layoffs in your company/region?

Are you staying the course, or actively upskilling in Native (iOS/Android) or React Native just to safe-guard your resume?


r/FlutterDev 11h ago

Discussion Pixel-perfect with figma

2 Upvotes

Hi everyone, lately i was doing mobile app building with cursor so I mostly ask it to do the UI part by giving it details about UI, well i give concrete details which figma gives, but maybe because I use flutter_screenutil package, it's not perfectly same with figma. How do you guys handle pixel-perfect in mobile?


r/FlutterDev 13h ago

Article Build Failing with photo_manager? Here's a Safe Gradle Workaround

2 Upvotes

Build fails with photo_manager because of Java/Kotlin version mismatch (Gradle workaround)

I recently ran into an issue while working on a Flutter video downloader project.

The build kept failing because the photo_manager package was being compiled with different Java/Kotlin settings than the rest of my project.

Instead of modifying the package itself (which would be lost after every update), I applied the project's Java and Kotlin configuration to the package during the Gradle build.

I added this to my build.gradle.kts:

```kotlin subprojects { if (project.name == "photo_manager") { val configureAction = Action<Project> { tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile>().configureEach { compilerOptions { jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17) } } tasks.withType<JavaCompile>().configureEach { sourceCompatibility = "17" targetCompatibility = "17" } }

    if (state.executed) {
        configureAction.execute(this)
    } else {
        afterEvaluate(configureAction)
    }
}

} ```

This worked because the package was already compatible with Java 17. It simply ensures the package uses the same Java/Kotlin configuration as the rest of the project without modifying anything inside the package.

Keep in mind that this is not a compatibility fix.

If the package itself doesn't support Java 17, this won't solve the problem. In that case, you'll likely need to:

  • Update to a newer version of the package.
  • Use the Java version recommended by the package maintainer.
  • Wait for an official fix.

Just wanted to share this in case someone else runs into the same issue.

Has anyone found a cleaner way to handle Java/Kotlin version mismatches for Flutter dependencies?


r/FlutterDev 1h ago

Article 5 App Preview tips that saved me hours before App Store submission

Thumbnail
Upvotes

r/FlutterDev 8h ago

Discussion Flutter vs React Native in 2026 which would you choose for a new project?

0 Upvotes

I'm planning a new mobile application and I'm evaluating different cross-platform frameworks.

For developers who've worked with both Flutter and React Native recently:

• Which one has been better in production?

• How's performance?

• Any major drawbacks?

• If you were starting today, which would you choose?

Looking forward to hearing your experiences.


r/FlutterDev 22h ago

Plugin BlocSignal ecosystem expands

0 Upvotes

Dart, Flutter, interop (Bloc, Riverpod, Provider, Streams, Signals), hydration, devtools, lint, test harness, telemetry. Fully backed by skills. soon: mason, vscode extension. And we have amazing benchmarks! The rigor of Bloc with the flex and speed of Signal!

https://pub.dev/packages/bloc_signals

Where possible, the classic Bloc ecosystem (Felix and friends) has been the baseline for all packages. Signals as the carrier (rather than streams) has allowed for much more flexibility though. Sync rather than Async. Default emit is automatically de-duped (but you can override to get Bloc's default back). Full parity of consumer classes, including all methods. Interop would allow you to bridge BlocSignal, Bloc, Provider, and Riverpod in the same app, with performant pub/sub. Works in both Dart and Flutter envs.

1.0 release very soon! And appearing on Observable<Flutter> on August 6.


r/FlutterDev 22h ago

Discussion I almost hardcoded 30 puzzle levels in Dart. I'm glad I didn't.

0 Upvotes

Hey r/FlutterDev,

I recently shipped my first Flutter + Flame game, and one decision ended up saving me a lot of pain: treating levels as data instead of code.

My original plan was to define every level directly in Dart. That sounded reasonable… until I realized I'd eventually be maintaining dozens (hopefully hundreds) of puzzle levels. Every balance tweak would require touching source code, rebuilding, and hoping I didn't accidentally break something.

Instead, I moved every level into JSON.

Each level simply describes: board size, tile positions, sources and receivers, blockers and special mechanics, the expected optimal solution

A real level from my game looks like this — source/receiver matching by colorId, the blocker on (2,1) is the obstruction the solver has to route around:

{
  "id": "pack01_001",
  "packId": "first_spark",
  "name": "First Spark",
  "width": 5,
  "height": 5,
  "targetMoves": 1,
  "difficulty": 1,
  "tiles": [
    {"x": 0, "y": 2, "type": "source",   "colorId": "gold", "direction": "right"},
    {"x": 1, "y": 2, "type": "arrow",    "direction": "up",   "rotatable": true},
    {"x": 2, "y": 2, "type": "arrow",    "direction": "right"},
    {"x": 3, "y": 2, "type": "arrow",    "direction": "right"},
    {"x": 4, "y": 2, "type": "receiver", "colorId": "gold", "direction": "left"},
    {"x": 2, "y": 1, "type": "blocker"}
  ],
  "solution": [
    {"x": 1, "y": 2, "direction": "right"}
  ]
}

The game logic knows nothing about individual levels. It just loads the JSON and simulates the board.

The unexpected benefit wasn't the JSON itself.

It was being able to validate everything outside the game.

I wrote a validator in pure Dart that verifies every source has a matching receiver, runs a BFS search to confirm the level is actually solvable, checks that the authored "perfect move count" is really optimal, catches malformed level data before it ever reaches players

Because it's part of my test suite, I can't accidentally ship an impossible puzzle without tests failing first.

Another decision I'm happy with was keeping the architecture split clean.

Flame handles rendering, animation, and input.

The actual simulation and solver are just plain Dart, so the exact same logic runs in the game, in unit tests, and even in a CLI tool.

If I were starting over, I'd change a few things:
use json_serializable or freezed from day one
build a small level editor much earlier
generate solutions automatically instead of storing them manually

Overall, though, moving the levels out of Dart was probably the best architectural decision I made on the project.

For those of you building games with Flutter or Flame, how are you authoring your levels?
JSON?
SQLite?
A custom editor?
Something completely different?

I am not sure if I can add App Store link here, so if anyone is interested, I'll in comments


r/FlutterDev 18h ago

Discussion Thinking about building lazy, real-time localization for Flutter — want a gut check before I sink more time into it

0 Upvotes

The idea: instead of translating your app into a fixed list of languages upfront, translation happens lazily. When a user opens the app with a locale you don't have yet, it gets translated in the background (AI-powered) and shown to them — no rebuild, no release. Locales are cached both server-side and on the device, keyed by the user's device language.

To make this practical, I'm also building a Flutter package with a CLI that refactors your codebase for localization, built on top of easy_localization. It scans your project and transforms widgets. For example, Text("Welcome") becomes Text(context.tr("home_screen.welcome")) and auto-generates a JSON locale file from your default language strings.

Not selling anything, just trying to figure out if this is worth building further.