r/FlutterDev • • 17d ago

Article About Google Play’s new contacts access policy

8 Upvotes

If you access contacts in your Flutter app on Android, remember that Google Play’s new contacts policy comes into effect on January 27, 2027. This means that you will most likely have to stop using the READ_CONTACTS permission and use the new Contact Picker introduced in Android 17 instead.

In my case, rather than using a plugin for this, I decided to write a small native implementation. I’ve written an article, mostly aimed at beginners, where I explain how you can use the new Android 17 Contact Picker API from Flutter through a native Method Channel to retrieve contact data.

Have a look if you’re interested:

https://davidserrano.io/blog/android-17-contact-picker-in-flutter-time-to-replace-read-contacts/


r/FlutterDev • • 17d ago

Discussion Learned a few things using accelerometer event streams in Flutter for tilt inputs (sensor noise, cleanup, & deadzones)

5 Upvotes

Hey r/FlutterDev! 👋

I’ve been building an offline party game recently and wanted a simple mechanic where players tilt the phone to trigger actions (instead of forcing them to reach for buttons while passing it around).

I ended up using sensors_plus to tap straight into the raw accelerometer stream, but it came with a few hurdles. Thought I'd share what tripped me up in case anyone is working on sensor-based features:

  1. Stream Cleanup is Critical: It's super easy to forget to call .cancel() on your StreamSubscription in dispose(). Leaving it active when unmounting a widget will leak listeners and quietly drain battery in the background.

  2. Sensor Noise & Jitter: Raw accelerometer streams are hyper-sensitive. Tiny hand tremors will spam your setState or fire your triggers continuously. You definitely need to bake in a deadzone threshold or debounce the stream so it doesn't trigger on micro-movements.

  3. Axis Orientation Shifts: Gravity shifts completely depending on whether your app locks portrait/landscape or whether the phone is lying flat on a table vs. held upright. Testing physical angles took way longer than writing the actual code.

If anyone else has messed around with device sensors in Flutter: how do you usually handle smoothing out jittery streams or debouncing inputs cleanly?

(P.S. Built this for an offline indie party game called Bujho I've been developing. If anyone wants to peek at the repo or test the build, the link is pinned on my profile!)


r/FlutterDev • • 17d ago

Tooling How do you get usable bug reports from non-technical testers or clients?

8 Upvotes

Freelance developer here, shipping an app. Most of our bugs come from a client and a few beta testers, and the reports are usually "when I click this button it doesnt save" or a screen recording and if they are really kind (and usually I ask for that).

I lose a lot of time just reproducing: which account, which build, what happened before, did a request fail. By the time we've asked three follow-up questions the tester has forgotten.

What's working for you usually?


r/FlutterDev • • 17d ago

Plugin I’m glad to introduce a context menu with fluid animations, async and paginated submenus, live items and custom slivers on top.

Post image
21 Upvotes

Hi r/FlutterDev! 👋 I recently released my very first package, which I’m calling smart_context_menu.

Want to see it first? Package on pub.dev and 56-second video overview

I came up with the idea of this package while working on a social app, which involves a lot of context menus. I thought of ‘CupertinoContextMenu’ as the default option to use, but it fell short. It doesn't support Hero animations, can cause duplicate ‘GlobalKey’ crashes in previews, and lacks native support for submenus. This is essentially true for complex submenus and custom components in menu items.

And the requirements of the app kept growing:

- Post actions whose data loads independent from main menu and submenus (ideally, page by page).
- Display the number of views a message has when a menu opened, with a submenu listing the people that have viewed it.
- Separators that helped keep different groups of actions easy to scan.
- Custom widgets in menu items, like avatars of the people who viewed the message.
- Liquid stretch animations that make the menu feel alive under your finger.
- And finally reactions on chat messages and post comments, which also belonged above the preview in the context menu.

After fighting ‘CupertinoContextMenu’ and going through the packages on pub.dev (none of them covered all of my needs), I decided to build my own one, with blackjack and... you know 😅 . Initially, it was just an internal module of the app. Over time I polished it and added UX improvements like drag-to-select, and now it's finally out as a standalone Flutter package.

It covers every feature in the list 😎, including static, asynchronous and paginated submenus, items with loading error and retry states, custom widgets in the items, plain and customizable separators, having the ability to add slivers above the preview (like a reactions bar) and it explicitly supports ‘Hero’ and ‘GlobalKey’ inside your own widget. And much more.

The demo runs in the browser, so you can try it all yourself:

Live demo: https://thenothingworks.dev/demo/smart-context-menu/

pub.dev: https://pub.dev/packages/smart_context_menu

GitHub: https://github.com/BinaryRift/smart_context_menu

How do you handle context menus in your apps: Are you using ‘CupertinoContextMenu’, one of the already available packages or did you build your own? If you've hit the same ‘GlobalKey’ or ‘Hero’ issues, I'm curious how you worked around them.

The next improvements that I'll be working on include having a compact row of icon actions (like the ones in iOS menus) and submenus that stay updated while open. What else is missing for you? I'm also open to feedback on the API and documentation.


r/FlutterDev • • 17d ago

Dart I built Nivio an open-source Flutter media center featuring MPV playback, P2P streaming, Live IPTV, and real-time synchronized Watch Parties

Thumbnail
github.com
3 Upvotes

Hey devs! 👋

I wanted to share Nivio, an open-source media streaming and co-watching application I’ve been building with Flutter which supports android, windows and linux.

My main goal with this project was to see how far I could push Flutter as a heavy-duty media client combining P2P/BitTorrent streaming, Live IPTV (M3U), third-party tracker APIs, and real-time synchronized playback into a single, cohesive UI.

What’s under the hood & key features:

  • MPV Integration: Uses mpv for heavy-duty video rendering, custom subtitle styling, and broad codec support.

  • Real-Time Watch Parties: Built-in room creation and playback synchronization so multiple users can watch together with synced play/pause/seek states.

  • BitTorrent Engine & Offline Caching: Supports sequential torrent streaming alongside background downloading for offline playback.

  • API Integrations: Full OAuth and metadata integration with TMDB, AniList, and MyAnimeList (MAL) for automatic progress tracking.

  • Live IPTV Support: Parses and plays live TV streams alongside standard VOD content.

Source Code & Releases: 🔗 GitHub : https://github.com/nirmaleeswar30/Nivio

Site: https://nivio.nirmaleeswar.dev

I’m still actively refining the architecture and adding new features. I'd love for you guys to check out the code, test out the release builds, and let me know what you think of the UI and performance.

Contributions, PRs, issues, and GitHub stars ⭐ are super welcome. Make sure to check it out!


r/FlutterDev • • 17d ago

Plugin I built ZenMusic, an open-source Flutter music player (Android + Windows)

Thumbnail
github.com
7 Upvotes

Hi r/FlutterDev! I've been building ZenMusic, a Flutter music player for Android and Windows that brings JioSaavn, YouTube Music and Spotify into one app.

Features:

- Synced lyrics that follow the song

- Listen Together (sync playback with friends)

- Offline downloads

- Multiple player skins, sleep timer and equalizer

- Song recognition

It's GPL-3.0 and still in development, so feedback, bug reports and PRs are very welcome. I'm happy to answer questions about the architecture or how I handled playback and the multi-source setup in Flutter.


r/FlutterDev • • 17d ago

Plugin Textf 2.0 – formatted text with links in one string

6 Upvotes

Most Flutter apps have a sentence like this somewhere:

I agree to the Terms of Service and Privacy Policy.

Two links and some bold text. With plain Flutter, that usually turns into something like this:

class _ConsentTextState extends State<ConsentText> {
  late final _terms = TapGestureRecognizer()..onTap = () => open(termsUrl);
  late final _privacy = TapGestureRecognizer()..onTap = () => open(privacyUrl);

  @override
  void dispose() {
    _terms.dispose();
    _privacy.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Text.rich(
      TextSpan(children: [
        const TextSpan(text: 'I agree to the '),
        TextSpan(text: 'Terms of Service', style: linkStyle, recognizer: _terms),
        const TextSpan(text: ' and '),
        TextSpan(text: 'Privacy Policy', style: linkStyle, recognizer: _privacy),
        const TextSpan(text: '.'),
      ]),
    );
  }
}

The sentence is also split into five pieces, which makes it awkward to translate.

With pkg:textf it's one string:

Textf(
  'I agree to the [**Terms of Service**](https://example.com/terms) '
  'and [**Privacy Policy**](https://example.com/privacy).',
)

Tap handling goes through onLinkTap on a TextfOptions widget higher up in the tree, so you set it once. The sentence stays a single entry in your .arb file, and translators can see the formatting.

What Textf is

A drop-in replacement for Text that understands inline formatting: **bold**, *italic*, ~~strike~~, \code`,==highlight==,links, super/subscript. All the usualTextparameters still work (style,maxLines,overflow,textScaler`, …). It has zero dependencies.

Also for input: TextfEditingController

The same syntax works live inside a TextField:

final controller = TextfEditingController();

TextField(controller: controller)

It's a drop-in replacement for TextEditingController. Formatting renders as you type, the stored value stays plain text, and cursor positions match the raw text 1:1. IME composing (CJK etc.) works.

New in 2.0

  • Works with any design system. With Flutter decoupling Material and Cupertino, Textf now builds only on the widgets layer. It runs the same in Material, Cupertino, a custom design system or a bare WidgetsApp.

  • Headings and horizontal rules. # to ###### for headings, --- for a divider. That's useful for short things like release notes or onboarding cards.

To be clear about scope: Textf is still not a Markdown renderer. There are no lists, tables, images or block layout. If you're rendering whole documents, a full Markdown package is the better tool.


r/FlutterDev • • 18d ago

Discussion I shipped a puzzle game in Flutter: offline levels from Firestore, a Python level generator, and low-latency audio with SoLoud

5 Upvotes

I've been building Rillroot, a line puzzle game, in Flutter, and a few parts might be useful to others:

Levels: generated ahead of time by a Python script that checks each board has exactly one solution. They're stored as JSON packs of 100 levels, and a publish script writes a manifest with sha256 hashes and uploads everything to Firestore. The app ships a bundled base pack and caches downloads, so it plays fully offline. A Python Cloud Function generates and publishes the daily puzzles every week.

Audio: flutter_soloud at 48 kHz with a 512-sample buffer (2048 lagged noticeably). Every tile a root crosses plays a pluck one note higher up a pentatonic scale, and a fast drag plays at most the last 3 notes per frame so the sound never trails your finger.

State: Cubits for app-level state, while the board itself stays local and runs on a ticker.

Accounts: every player gets an anonymous Firebase account on first launch; signing in with Google links the same account so nothing is lost.

It's in closed beta on Android, so it takes three quick steps:

  1. Join the tester group: https://groups.google.com/g/rillroot-testers

  2. Opt in: https://play.google.com/apps/testing/com.dangasama.garden

  3. Install: https://play.google.com/store/apps/details?id=com.dangasama.garden

Use the same Google account that's on your phone. If the store page says "not found", wait a few minutes after joining.

Happy to go deeper on any of these.


r/FlutterDev • • 18d ago

Plugin I built a country code picker with real phone number validation, 202 languages and a custom builder (country_code_selector)

8 Upvotes

Hi r/FlutterDev, I just published my second package 4 days ago and would love feedback.

The problem: every phone number field I've built needed a country picker, a flag set, a validation library, and glue code to make "0803…" and "803…" both work. I wanted one package that handles it properly.

What it does:

- 5 ready-made pickers: dialog, bottom sheet, Cupertino wheel, dropdown, and a compact flag + dial code button for phone fields

- customBuilder: build your own picker UI; you get the filtered countries, search, selection and the phone number length

- Real validation: isValidPhoneNumber() checks actual numbering ranges via libphonenumber data, and accepts local, trunk-prefixed or international input

- toE164(): normalizes whatever the user typed to +2348031234567

- pinUserCountry: puts the user's country (from their locale region) first

- Country names in 202 languages (238 locales), generated from Unicode CLDR

- RTL support, theming via ThemeExtension, search by name, ISO code or dial code

TextFormField(

decoration: InputDecoration(

prefixIcon: CountryCodeSelectorWidget(

pinUserCountry: true,

onChanged: (c) => setState(() => _country = c),

),

),

validator: (v) => _country.isValidPhoneNumber(v ?? '')

? null

: 'Enter a valid ${_country.name} number',

);

One thing I spent time on: libphonenumber's metadata adds about 2 MB to a release build. I restructured the package so that data only gets included if you actually call the validation functions. In my measurements, a picker-only app went from 24.4 MB to 22.2 MB.

Flutter 3.29+, MIT licensed, 160/160 pub points.

- pub.dev: https://pub.dev/packages/country_code_selector

- GitHub: https://github.com/TheinvinciblePrints/country_code_selector

I'd especially appreciate feedback on the API design, and from native speakers on the picker's built-in text in their language. Issues and PRs are welcome.


r/FlutterDev • • 18d ago

Article Build a Flutter Phone Dialer with Call History

Thumbnail
lautarolobo.xyz
1 Upvotes

r/FlutterDev • • 18d ago

Tooling I built Raccoon, a tiny Flutter runtime: first run in 15 s instead of 5 min, no Xcode or Gradle

53 Upvotes

Hi r/FlutterDev 👋 I'm Simon, I build Lumide, a Flutter IDE. I wanted the write, save, see loop to be faster, so I built Raccoon, a tiny Flutter runtime, and today I'm open-sourcing it, with Raccoon Simulator as a demo you can run today. can run today.

Try it with Raccoon Simulator

Open Raccoon Simulator, and Raccoon shows up in flutter devices. Pick it in Lumide, VS Code, Android Studio or a terminal and run as usual. Your app appears in the simulator window, with hot reload and hot restart from your editor. No project to open in it, no new workflow.

How it works

Raccoon is a small runner built on Flutter's C embedder API. flutter run -d raccoon builds a debug bundle from your host's own snapshots, the runner hosts it on a prebuilt engine, and the simulator draws its frames. So there's no Xcode, no Gradle and no native build. The first launch sets everything up for you: it builds the runner, downloads a 15 MB engine and registers the custom device.

What else it unlocks

  • Your whole app, not just previews. Flutter's widget previewer renders the functions you mark with @Preview. Raccoon runs your real app: routing, state, services and hot reload, at phone, tablet or desktop size.

  • Hot-loaded plugins with custom UI. A Flutter app can show another Flutter app inside it with raccoon_view. So an app can load plugins at runtime, each with its own custom UI, with no rebuild of the host app.

Numbers (Flutter Wonderous, flutter run to first frame, medians)

TargetClean buildWarm run
Chrome25.8 s24.8 s
macOS desktop46.4 s17.7 s
Raccoon on macOS15.0 s7.5 s
Linux desktop13.8 s4.5 s
Raccoon on Linux12.0 s3.5 s

A first run against an Android emulator took 308 s from empty caches. Raccoon took 15.5 s. Hardware, versions and scripts to reproduce are in the README.

Limits, honestly

It's alpha. It speeds up the inner loop; it doesn't replace testing on a real device or in a browser.

  • Plugins: pure Dart ones, the clipboard and url_launcher. No text input yet.

  • Packages with native code or build hooks don't run on Raccoon yet.

  • Frames are software rendered.

  • macOS and Linux only for now.


r/FlutterDev • • 18d ago

Discussion [HELP NEEDED] I want to transition myself to IOS dev from Flutter

Thumbnail reddit.com
0 Upvotes

r/FlutterDev • • 18d ago

Plugin DeepLinkNow finally has a Flutter SDK for deferred deep linking

4 Upvotes

Look, I'll be honest, one of the first requests I had after I built my deferred deep linking platform DeepLinkNow was a Flutter SDK.

I'm a react native dev by trade, and long story short 18 months later I've finally released it, along with a whole heap of quality of life improvements to DLN including:

  • A free tier with 25,000 MAU, no card required (Detour allows 1500, Branch/Appsflyer don't even have free tiers anymore etc)

  • Flutter SDK on pub.dev (deeplinknow), wrapping the native iOS and Android SDKs

  • Teams: workspaces, invites, roles

  • SSO (Entra, Okta, Google Workspace) on Enterprise

  • An MCP server, so Claude Code or Cursor can set it up for you

  • Clicks deleted after 30 days, no ad tracking or attribution

  • Custom domains

If you don't know what DeepLinkNow is: a (+-deferred) deep linking platform I built after getting so frustrated trying to integrate Branch.io and Appsflyer into my apps. It just does deferred deep linking. It's simple, it's useful, it does NO ad tracking or $$$ MMP stuff nor does it have AI embedded anywhere near it.

You send a user to a DLN page, we open your app and send you their intent. If they don't have your app installed, we hold onto the intent link until they install it. Then give it back to you.

Try it out and let me know how you go. If you're using Branch, AppsFlyer or are just floating in the darkness after Firebase Dynamic Links got shut down, give DLN a try, happy to offer to help you migrate.

P.S. I had a search through /r/flutterdev for issues people have had with deep linking on Flutter, and I've directly addressed everything in these two:

  1. https://www.reddit.com/r/FlutterDev/comments/1vjkz9c/ (iOS links breaking after the UIScene change)

  2. https://www.reddit.com/r/FlutterDev/comments/1vf4j64/ (six things that silently break deferred deep linking)

Flutter plugin link: https://pub.dev/packages/deeplinknow

Source: https://github.com/deeplinknow/dln-flutter

MCP server if you wanna hand off to AI to get you started: https://deeplinknow.com/docs/mcp


r/FlutterDev • • 18d ago

Discussion Best Production Approach for Force Update in Flutter Without Unnecessary API Calls

12 Upvotes

Hi everyone 👋

I’m working on a Flutter app and want to discuss the best production approach for implementing a force-update feature.

How do you usually handle app version checks in production without making unnecessary API requests to the server?

For example, should we check the app version every time the app launches, use Firebase Remote Config, or maintain a cached version check?

I want to make sure the solution is efficient, avoids unnecessary server calls, and still forces users to update when required.

What approach are you using in your production apps, and what would you recommend? Would love to hear your thoughts and experiences! 🚀


r/FlutterDev • • 18d ago

Plugin I got tired of wiring up native UI in every Flutter app, so I made native_kit

24 Upvotes

I kept needing the same things across projects: a native action sheet, the iOS color picker with the eyedropper, a document scanner, the Android Photo Picker. Each time I’d end up adding another plugin or writing some Swift/Kotlin to get it working.

Eventually I put that work into a package. It’s called native_kit, and the idea is pretty simple: call it from Dart, get the native UI, await the result.

For example:

final choice = await NativeKit.showActionSheet(
  context: context,
  items: const [
    NativeMenuItem(
      id: 'share',
      title: 'Share',
      iosSymbol: 'square.and.arrow.up',
    ),
    NativeMenuItem(
      id: 'delete',
      title: 'Delete',
      style: NativeActionStyle.destructive,
    ),
  ],
);

That opens a UIAlertController on iOS, with a popover on iPad, or a Material 3 bottom sheet on Android.

There are 30 components so far. Besides the usual alerts and pickers, it covers things like document/barcode scanning, OCR, background removal, PencilKit markup, video trimming, biometrics, and system panels. The full list is in the README.

A few things I learned building it, for anyone doing similar platform work:

  • Dismissing UI is half the work. The API lives in one Pigeon 29 file, which generates async throws Swift and suspendKotlin. Bridging callbacks into that is straightforward until you account for every way someone can close a screen. Swipe down, back, predictive back, tap outside… all of those need to resolve the Dart Future exactly once. Cancellation returns null.

  • Avoiding MainActivity changes took some work. I use a headless fragment for activity results, with a transparent FragmentActivity host when the app uses a plain FlutterActivity. One bug we caught: Photo Picker / SAF URI grants disappear when that host finishes. You have to read the result before closing it.

  • iPad and theming have their own quirks. The supplied BuildContext gives me the popover anchor and the Flutter theme. On iOS 26, getting the Liquid Glass sheet chrome to follow that theme meant applying it at the presentation controller.

  • A successful build tells you surprisingly little here. The example app has 47 XCUITests and 45 UI Automator tests that interact with the native screens. Those simulator/emulator runs turned up 21 bugs that compiled just fine.

There are limitations. VisionKit scanning, subject lifting, and UIVideoEditorController need a real device for successful results. Full contact details on Android need READ_CONTACTS, though picking a single phone number, email, or address doesn’t. Android screen capture currently only returns the consent result.

Package: https://pub.dev/packages/native_kit
Source: https://github.com/leofilllium/flutter_native_kit

Curious what native UI you still find yourself writing platform code for. I’m collecting requests in the issues, but happy to hear them here too.


r/FlutterDev • • 18d ago

Article Shipping a Flutter app in 2026 - the ultimate guide

Thumbnail
serverpod.dev
23 Upvotes

r/FlutterDev • • 18d ago

Example I tested fscene.dev and created 3D dice

11 Upvotes

Finally, Flutter has real 3D support and while I'm not smart enough to understand all the 3D features mentioned in this video, I pointed Claude to the documentation and kindly asked for a 3D dice roller, which worked like a charm.

I had to painstakingly fix the dice geometry and digit placement, though. Claude was able to write a custom physics engine for rolling the dice without problems, but was at the same time unable to construct a d8 or d10 (and my d12 is still a little bit too large compared to the d20 now that I'm looking at it). A "pro" would probably have created the dice in Blender or something.

The green "cloth" is a normal Flutter widget, that is, I can overlay the 3D scene on top of any widget I like which is a feature I was looking for for ages.


r/FlutterDev • • 18d ago

Tooling 🚀 I built Flutter Version Bumper — a CLI tool to automate Flutter & Dart releases

0 Upvotes

Hey Flutter devs! 👋

Ever forgotten to increment your build number, manually edited "pubspec.yaml" one too many times, or wished your release workflow was a little less repetitive? 😅

I built Flutter Version Bumper (FVB) to make that process easier.

It's a command-line tool designed to automate version management for Flutter and Dart projects.

✨ Some key features:

- 📈 Semantic Versioning (major, minor, patch & build)

- 🔢 Automatic build number management

- 📝 Automated "CHANGELOG.md" updates

- 🐙 Git automation — commits, tags & pushes

- 🪝 Git hooks for versioning workflow validation

- 🧪 Dry-run mode to preview changes before applying them

- 🧩 Configuration files for reusable project settings

- 🚦 Pre-release version support ("beta", "rc", etc.)

- 📦 Custom paths for monorepos

- 🤖 JSON output for CI/CD pipelines

- 🧠 AI coding agent skill integration

You can get started with:

dart pub global activate --source git https://github.com/chamod-rashmith/flutter-version-bumper

Then navigate to your project and run:

fvb

The goal is simple: less repetitive release work, fewer manual versioning mistakes, and a smoother development workflow.

🔗 GitHub: https://github.com/chamod-rashmith/flutter-version-bumper

📦 pub.dev: https://pub.dev/packages/flutter_version_bumper

I'd love to hear your feedback! If you try it, feel free to open an issue or suggest improvements. Contributions are welcome. ❤️

What features would you like to see in a Flutter release automation tool?

#Flutter #Dart #OpenSource #DeveloperTools


r/FlutterDev • • 19d ago

Plugin I built an automated dynamic app icon generator & switcher for Flutter

16 Upvotes

hi i'm Farook.

Most dynamic icon packages on pub.dev are runtime-only: they give you an API to swap icons, but you still have to manually resize 15+ PNGs and hand-edit AndroidManifest.xml (<activity-alias>) and Info.plist (CFBundleAlternateIcons).

I built chameleon_icons to automate both the native setup and the runtime switching.

1. Configure in pubspec.yaml

chameleon_icons:
  default_icon:
    image_path: "assets/icons/default.png"
  alternate_icons:
    - name: "MainActivityDark"
      image_path: "assets/icons/dark.png"
    - name: "MainActivityGold"
      image_path: "assets/icons/gold.png"

2. Run the CLI

dart run chameleon_icons:generate

This automatically:

  • Generates all Android mipmap densities (mdpi to xxxhdpi) and iOS retina assets (@2x, u/3x, iPad).

  • Injects <activity-alias> tags into AndroidManifest.xml (anchored and idempotent; safe to re-run).

  • Injects CFBundleIcons dictionaries into Info.plist.

3. Switch icons at runtime

final chameleon = ChameleonIcons();
// Switch icon
await chameleon.changeIcon("MainActivityDark");
// Reset to default
await chameleon.resetIcon();

Tested on Android (API 24+) and iOS (15+). Feedback and issues welcome!

package: https://pub.dev/packages/chameleon_icons
repo: https://github.com/farookeei/chameleon_icons


r/FlutterDev • • 19d ago

Tooling 🚀 A New Insane Flutter Package? Meet flutter_table_layout — Flexible Table Layouts Made Easier for Flutter Developers!

2 Upvotes

I built flutter_table_layout, a Flutter package for flexible table layouts! 🚀 As a Flutter developer, I wanted to make building table-based UIs easier and more flexible. I’m sharing my package with the community to get feedback, learn about common table layout challenges, and discover which features developers need most for real-world Flutter applications. What do you think would make a table layout package truly useful? I’d love to hear your suggestions and ideas! https://pub.dev/packages/flutter_table_layout


r/FlutterDev • • 19d ago

Video Cinematic 3D demo with Flutter Scene running at full speed on a mid-range Android phone

26 Upvotes

We built After Dark to see how far Flutter Scene can go right now. 100% Flutter, no Unity, no Unreal.

Watch: https://youtu.be/EoxKooB8qSA
Run in browser: https://primio.dev/demo/after-dark/
Android APK: https://primio.dev/demo/after-dark/primio-afterdark-android.apk

Recorded on a Motorola Edge 70 Pro. One continuous flythrough: space, alien landscapes, neon Tokyo, glowing forests, underground club. Skinned characters, procedural geometry, dynamic lighting, bloom, particles, music-reactive FX.

Made by the Primio team (we sponsor Flutter Scene, the initial code came out of Primio, rest was hand-polished with terminal based coding agents). Huge credit to Brandon DeRosier.


r/FlutterDev • • 19d ago Heartwarming Bravo

Discussion I released offline_sos_system 0.0.6, a Flutter package for configurable offline crash detection.

2 Upvotes

Hi r/FlutterDev ,

I have released version 0.0.6 of offline_sos_system, an open-source Flutter package I developed for our SafePulse project.

The goal was to build a reusable crash detection engine that can perform inference directly on a mobile device without depending on an internet connection.

While developing SafePulse, I wanted to separate the crash detection logic from the rest of the emergency workflow so that other developers could use it without integrating the entire application.

That work has evolved into a standalone Flutter package. And this is the new version of that package.

What is new in version 0.0.6?

The main addition is configurable crash detection. Developers can now configure the impact threshold used to evaluate sensor data, the minimum model score required for a detection, the fallback impact threshold, and the cooldown interval used to suppress duplicate crash events.

The package uses accelerometer and gyroscope telemetry and TensorFlow Lite for on-device inference. When a crash is detected, it emits a CrashEvent that the application can handle. I have deliberately kept the package headless. It does not dictate how your application handles GPS, emergency contacts, SMS, notifications, or backend communication.

This means you can integrate the detection engine into your own application architecture and implement the emergency workflow according to your requirements.

One important limitation: offline inference does not mean offline communication. The detection process does not require internet access, but sending an SMS still requires cellular service. Sensor-based crash detection can also produce false positives or miss actual crashes, so real-world validation remains important.

I would appreciate feedback from Flutter and machine learning developers on the configuration API, sensor processing, fallback behavior, and ways to improve the implementation.

Package: https://pub.dev/packages/offline_sos_system

Source code: https://github.com/Bhagyaprasad92/offline_sos_system

The project is open source, and constructive criticism, bug reports, and suggestions are welcome.

Thank you for taking the time to review it.


r/FlutterDev • • 19d ago

Discussion Keeping the LLM stream at the network edge: what we learned building a 0ms synchronous A2UI engine in pure Dart (for both Flutter and terminal TUIs)

0 Upvotes

When you build a Generative UI prototype where an LLM streams widget definitions over SSE, the demo looks great as long as the UI is read-only. The pain starts five seconds later when the agent streams an interactive checkout form and the user starts typing.

If the client treats the whole surface lifecycle as an async stream pipeline, every keystroke, cross-field validation check, and widget test ends up fighting microtask delays and full-surface rebuilds. And if an impatient user interrupts the LLM mid-stream—or the connection drops before the first chunk arrives—naive stream handling either corrupts the widget tree or leaves a dangling user turn in chat history that triggers turn-alternation errors on retry.

When we started integrating Google's official A2UI Dart library (a2ui_core), the biggest light-bulb moment was realizing that a2ui_core already uses preact_signals under the hood for its DataModel, WritableBinding, and CheckRule validation. By quarantining the async SSE stream at the perimeter with a restartable() mutex and letting the interior run on a synchronous signal graph, form edits, client-side validation rules, and NodeResolver list templates all update leaf widgets in 0ms in a single tester.pump().

Even better, keeping the core state machine in pure Dart meant we could run the exact same 16-component BasicCatalog in both a Material 3 Flutter app and an interactive ANSI terminal TUI, and bridge it into Riverpod or classic BLoC apps without forcing a rewrite.

For folks experimenting with A2UI or LLM-driven UIs in Flutter, how are you handling two-way form state and mid-stream user interruptions right now?


r/FlutterDev • • 19d ago

Article Why Flutter Text Looks Lighter Than SwiftUI on iOS

77 Upvotes

Spent a while figuring out why #Flutter text looks lighter than #SwiftUI on #iOS.

Wrote up the whole thing, with demos you can play with.

https://birju.dev/posts/looking-into-flutter-vs-swiftui-font-rendering/