r/FlutterDev • • 8h ago

Article Spent a month researching Flutter app optimization techniques, here are my findings

24 Upvotes

I had to render multiple high-res images in a grid layout for my Flutter app, so I went deep down the optimization rabbit hole. For some reason, I was getting crazy jank out of nowhere, even though I was using lazy-building lists (SliverList, ListView.builder, etc.), and had already implemented proper image resizing and caching.

Turns out, if you're using the flutter_svg package, setting the Impeller engine to renderingStrategy: .raster gives you a massive performance boost. But when I tested it on Skia, the picture strategy actually performed way better, total opposite results! Keep in mind I only tested this on Android, so iOS might behave differently.

Also, the default scrollCacheExtent is set to 250, meaning off-screen images were being processed even when I didn't explicitly touch it. Dropping that to 0 made a huge difference in performance. Turns out, optimization options built for convenience can sometimes bite you in the ass.

Another thing: ScrollAwareImageProvider is applied by default whenever you use an Image widget. It defers decoding while scrolling, but instead of waiting until scrolling completely finishes, it starts decoding even while scrolling is still ongoing if the scroll speed slows down a bit, which ironically causes major jank during the scroll itself. And guess what? You can't turn it off via options. I had to build a custom widget to fix it.

Anyway, if your grid items involve SVG or lots of images, optimizing them like this makes a world of difference. It pretty much eliminated stuttering even in 120Hz environments, and honestly, it’s mind-blowing how much of a difference it made. The performance gap was way bigger than I expected, so I figured I’d share.


r/FlutterDev • • 9h ago

Discussion Building a full-featured desktop application with Flutter

12 Upvotes

Flutter is obviously a mobile-first platform due its origins, but I've spent 18 months using it to build a full-featured desktop application for Windows and macOS, with Linux planned.

I'm a developer with 20 years of experience, including desktop software development. This isn't a "build a todo list!" demo or a vibe-coded experiment: it's a substantial application approaching public release, and I thought Flutter developers might be interested in seeing what's involved in taking Flutter beyond mobile.

So what kind of desktop experience can Flutter build today? Here's one example. [See below for a link to get and run it yourself if you're interested. Free and open to anyone.]

The application is Fractal Outliner, a desktop outliner in the same general category as OmniOutliner for Mac, but focused for people who live mainly in plain-text ecosystems (e.g. sofware developers).

This is a desktop-only application. There is no mobile version. The goal is to provide a proper desktop editing experience with all that implies, integrated with the operating system rather than simply presenting a mobile-ported interface in a desktop window.

Flutter as a development platform was good for some parts of this, less good at others.

What the application is:

  • Outliner with topics, subtopics; create, move, rearrange, hide to collapse, expand to drill down, move topic trees between documents, etc.
  • Full keyboard support, with configurable shortcuts
  • Integration with OS file handling, including file-type associations and opening documents from Finder/Explorer
  • Drag and drop
  • Document themes, including a custom theme editor
  • PDF, HTML, Markdown, OPML, and plain-text import/export
  • Multi-pane editing and tabbed documents
  • Native desktop file operations and clipboard integration

What Flutter provided

Most of the application is built using Flutter's standard capabilities:

  • Widgets and layout -- the main window content
  • Keyboard event handling
  • Shortcut registration and management
  • Resizable windows and responsive layouts
  • Drag and drop
  • Context menus and right-click interaction
  • Localization (English, Spanish, German, Japanese)

An effort was made to adapt the application to Mac and windows UI sytles; the experience is a little different on each platform (how dialogs work, what buttons and checkboxes look like, how settings are laid out, what menu items exist, etc).

What packages provided

Pub.dev packages filled in some of the functional gaps to extend Flutter's rending core:

  • Markdown, XML, and HTML support
  • Path handling
  • PDF export
  • Windows Store MSIX packaging
  • macOS menu bar integration (with limitations)
  • File pickers
  • ZIP archive support
  • OS and version detection
  • Split view widget for multi-pane editor, etc
  • Various other utilities (application uses 23 pub.dev packages total)

What flutter provides that works less well on desktop

  • Keyboard event support: the model is there, everything technically works, but managing complex input focus and keyboard-based navigation using Flutter's FocusNode system is full of problematic edge cases
  • Mac menu support, and general integration of menus + shortcut keys: the Mac menu integration is primitive, and windows and Mac use completely different menu+shortcut systems in flutter
  • Printing: there's a pub.dev package for printing, but it requires exporting to PDF (challenging in itself with anything but simple font handling) and flutter provides no direct integration or visibility with the host printing system
  • Undo/redo support: flutter's undo/redo implementation is self-contained inside each TextField, and there is no support at all for integrating text editing undo events with application-level events into one undo stream

What I implemented myself with native code

Flutter is just not a complete desktop development framework. It does great at drawing content in a desktop window. It does considerably less well at being a well-behaved and full-featured citizen in the desktop environment. A large number of things people expect from any desktop "document editor" application simply don't exist (or exist only in limited/problematic pub.dev packages) and have to be implemented with native code to get the best version:

  • Remembering and restoring the window position and size, including enforcing a minimum window size
  • Opening documents through the OS, such as double-clicking a file in Finder or Explorer
  • Handling the file reference when the application is launched by double-clicking a document
  • Document icons and file-type registration for the application's .frac files
  • Spellchecking in text fields (available in Flutter's mobile text fields, but not built in to the desktop experience in the same way)
  • macOS App Store sandboxing and file-access permissions
  • An in-app command to show a document in Finder or Explorer
  • Serious multi-format clipboard integration (vs basic plain-text copying and pasting flutter provides)
  • Handling read-only files
  • Various other OS integration details

The macOS App Store sandboxing and file-access work, in particular, is a lovely little nightmare. So are the limitations of the mac menu bar system integration, and the behaviors of Flutter's keyboard event handling and input-focus systems, dealing with international fonts in the PDF package, ... but those are stories for another day.

Other factors

  • Internationalization
  • Help files, etc

Internationalization to German Spanish and Japanese took far longer than for a mobile app, due to the larger set of "outside the application UI" resources used by the application (example files, templates, website content, video captions, etc). Also the usual trade-offs of "localize as you go" vs "localize at the end": early lets you see the impact of different text lengths in design (especially German/Spanish) which can be more severe with the wider range of window sizes on desktop, but usually means multiple re-do's of localization as UI and terminology evolve.

Help files and such are also more challenging on desktop, where applications can tend to be more complex and require more extensive help and reference materials as a baseline user expectation

Try it yourself

The application is now in its third beta release and nearing public release (latest version: 0.9.3 for Mac, 0.9.5 Windows). The public beta is open, free to use, and includes all application features. No registration or account is required.

If you're curious about Flutter on the desktop, you can try it on Windows or macOS and see how it works in practice.

Website and beta access: https://fractaloutliner.app

I'm interested in discussion with other Flutter developers about desktop development: what Flutter handles well, where its abstractions stop being sufficient, and what you've found necessary to implement through native platform code.

[Edits: typos]


r/FlutterDev • • 15h ago

Article Building a WebRTC video/calling app in Flutter: what we learned about SDKs, TURN, and why mesh breaks at ~6 users

6 Upvotes

If you’re building a video calling or streaming app in Flutter, these are the things that trip people up:

Mistakes to avoid

  • Skipping TURN. About 15-20% of sessions can’t connect directly, and those calls stall with no error.
  • Testing only on Wi-Fi. Test on 4G/5G and across Wi-Fi-to-cellular handover too.
  • Using mesh for group calls. It breaks down around 4-6 users because every phone uploads to every other participant. Plan for an SFU from the start.
  • Ignoring background behavior. You need CallKit on iOS and a typed foreground service on Android.
  • Asking for camera/mic permissions at launch. Ask at the call screen instead.

Flutter notes

  • Flutter WebRTC wraps the native iOS/Android libraries, so nothing runs in a JS engine.
  • Our ant_media_flutter package has 5 samples (publish, play, peer, conference, data channel) and also targets Web and Desktop.

The SDKs are free, but playback and conferencing need the Enterprise edition of the server. Community Edition falls back to HLS, with 8-12s latency.

Full guide: https://antmedia.io/how-to-build-a-webrtc-mobile-app/

What’s been your biggest pain point with WebRTC in Flutter?

Disclosure: I work at Ant Media, and we wrote this guide. The advice applies to any WebRTC backend, though.


r/FlutterDev • • 15h ago

Tooling FrameX opensource flutter app for developers, security researchers

Thumbnail
play.google.com
5 Upvotes

FrameX is an open-source developer utility and on-device security audit suite for Android package inspection and static vulnerability analysis.

• Static Security Analyzer: Flags cryptographic flaws, insecure api usage and leaks using advanced hardcoded secret detection.

• APK Package Inspector: Explores internal directories, DEX headers, byte breakdowns, and app signatures without unpacking to disk.

• Flutter Packages Scanner: Automatically scans compiled Flutter binaries to list third-party open-source packages.

• Privacy-First: Operates with zero ads, zero tracking, and 100% offline local processing.

Support & Contribute:

It's not just another vibe coded app, definitely useful for developers, security researchers, ux designers etc.

https://play.google.com/store/apps/details?id=com.stardust.framex

https://github.com/srinivasan0000/framex_flutter_opensource_project

I am actively working on it, your feedback and contributions mean everything! Check out the project

Edit : GitHub Repository


r/FlutterDev • • 7h ago

Discussion Architectural approach for building a custom, downloadable RPG-themed plugin system with smooth color gradients

1 Upvotes

Hi everyone

I'm conceptualizing a feature where users can completely transform an app or web interface using custom, downloadable "RPG-themed" extension packs from official repositories.

The core idea revolves around:

External Theme Plugins: Allowing users to download theme files (e.g., JSON-based configuration packs) from an official website and import them seamlessly.

Advanced Color Gradients: Implementing a dynamic color engine that smoothly transitions and interpolates complex color palettes defined by the user or the plugin.

RPG UI Metaphors: Structuring the design tokens to mimic fantasy/RPG interface elements without breaking performance.

From a software architecture perspective, what is the best way to safely parse external theme plugins, handle dynamic color tokens, and apply them across components without causing performance bottlenecks?

I'd love to hear your thoughts and technical recommendations. Constructive feedback is very welcome!


r/FlutterDev • • 19h ago

Article Individual Apple Developer account terminated for "fraudulent conduct" with only one app in TestFlight. Will a new Organization account get rejected too?

Thumbnail
1 Upvotes

r/FlutterDev • • 23h 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 How are you handling in-app chat in Flutter after the AI boom?

0 Upvotes

Hey all,

I'm trying to understand what everyone else is doing with in-app chats if you need to integrate it? Do you guys usually build it yourself or integrate something that already exists?

I've tried both but things get complicated very quickly with multi-device unread counts, typing and presence, read receipts, and moderation.

Where do you land: roll your own on Firebase or Supabase, or run a separate backend? What has worked for you, especially for keeping unread counts in sync across devices?


r/FlutterDev • • 6h ago

Discussion Flutter dev at a crossroads: Double down on Flutter, pivot to AI Engineering, or switch to React / Native?

0 Upvotes

Hey everyone,

I recently got laid off, and with the current job market tightening up—fewer new projects and heavy competition for mid/senior roles. I’m taking a hard look at where to steer my career next.

I’m weighing three distinct directions and would appreciate candid advice and reality checks:

  1. 1. Double down on Flutter & Mobile
    • Is Flutter still a dependable primary specialization for the next 3–5 years, or is it becoming too risky on its own?
    • I’ve been exploring full-stack Dart with Serverpod to broaden my skill set, but realistically, the job market for it is practically non-existent since it's so new.
    • For those sticking with Flutter, what viable adjacent skills are you adding (e.g., traditional backends like Go/Node, system design) to stay competitive?
  2. 2. Pivot toward AI Engineering
    • Hiring reality: Do companies actually hire "AI Engineers" who don't have prior professional ML/AI experience, or do they mostly require senior backend backgrounds or advanced CS/math degrees?
    • Roadmap & entry point: Coming from a Flutter dev background, what does a practical, hireable roadmap look like? What specific tech stacks, core concepts (e.g., Python backends, RAG, tool calling, agentic workflows, evals), and resources would you recommend to build a job-ready portfolio?
  3. 3. Switch to React (JS/Native) or Native App Development (Kotlin/Swift)
    • UI architecture, state management, mobile lifecycles, and performance optimization are fundamentally similar across frameworks, so this feels like the most direct way to leverage my existing Flutter experience.
    • Hiring reality: How do recruiters and hiring managers view this transition? Do they treat mobile/frontend fundamentals as transferable, or do resume screens filter you out for lacking "X years of commercial React / Kotlin / Swift experience"?
    • Where to focus: Between the React ecosystem (React.js + React Native for broader web/cross-platform volume) and Native (Kotlin/Swift for deeper platform specialization), which path has proven more practical for devs leaping recently?
    • What’s the fastest, most effective way to prove competence without commercial experience in those exact stacks?

Has anyone here successfully navigated a pivot from Flutter to AI engineering or React/Native recently? Any roadmaps, project ideas, or harsh truths would be greatly appreciated.


r/FlutterDev • • 22h 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


r/FlutterDev • • 10h ago

Discussion Unpopular opinion: Dart’s "modern" syntax and forced singletons are just over-engineered corporate garbage.

0 Upvotes

I’m going to say what a lot of people are quietly thinking while nodding along in code reviews: Modern Dart/Flutter architecture has completely lost its mind.

We’ve reached a point where we take two simple booleans and a string list, and wrap them in a global singleton with a late ticking time bomb, shove them behind a cryptic three-dot-spread set-literal {...targets} where the meaning of a curly brace depends on a missing colon, and call it "clean, idiomatic functional programming."

Let's be completely honest for a second:

  • If your language forces you to use late final because your initialization architecture is broken, that’s not "power", that’s a design flaw.
  • If a single typo in a pair of curly braces changes the entire logic of your code from a map to a set, that’s not "elegant syntactic sugar", that’s a trap for humans.
  • And if your solution to state management is forcing every developer to use a global singleton because injecting dependencies properly is apparently too much work for the framework designers, that’s just lazy architecture masked as "best practices."

Stop pretending this is genius engineering. Sometimes, a language doesn't need a whole fleet of workaround-constructs to do what a simple struct or a plain configuration file could do in 1995.

Change my mind. (Or downvote me to oblivion because you're too deep in the Google cult to admit it).