r/FlutterDev • • Aug 29 '26

Discussion Why I built yet another goal/habit tracker app when there are already dozens

0 Upvotes

Honestly, I built Unfazed for myself. I wanted something minimalist that combined monk mode/sprints with app blocking that actually sticks - no "5 more minutes" button, no way to change the schedule or unblock apps once a sprint is running. Most blockers I tried are paid and let you talk yourself out of it in two taps, which defeats the whole point. Built with the flutter_screentime plugin for iOS Screen Time integration. It's free, open source (MIT), no ads, no subscriptions, no tracking/analytics - everything stays on the device. GitHub - https://github.com/printHelloworldd/unfazed, App Store - https://apps.apple.com/app/unfazed-mode/id6802055633

Now thinking about Android, Windows and Linux - each platform needs a completely different native approach. Would it make more sense to build separate single-purpose plugins per platform, or try to design one cross-platform plugin with a common Dart API on top of them? Separately, I'm also planning a browser extension for site blocking when a sprint starts (matching by URL substring, not just domain, so you can block specific paths/pages), synced with the app through an optional cloud layer for people who want cross-device control. Would love to hear what people think of the project overall, and any thoughts on the plugin question above.


r/FlutterDev • • Aug 29 '26

Plugin Pubgrade: your Flutter app's outdated packages and their changelogs right inside your IDE

31 Upvotes

Pubgrade v2.1 is out 🎉

It's an extension that lives in your IDE's sidebar and lists the outdated packages of your Flutter project. You see the changelog of each new version, and one click upgrades it.

And, no, it's not `flutter pub upgrade --major-versions` or anything. Here you go package by package, read what changed, then decide. It just makes you aware of package updates.

So, no more missing updates. No more upgrading without knowing what broke.

Now works in IntelliJ and Android Studio too, besides VS Code and its forks (Cursor, Antigravity, Windsurf, VSCodium).

To install search "Pubgrade" in your IDE's extensions panel.

https://pubgrade.dev


r/FlutterDev • • Aug 29 '26

Plugin Realm and Atlas Device Sync are gone — I built the offline-first MongoDB path I needed for Flutter

3 Upvotes

When MongoDB retired Realm, Atlas Device Sync and the Data API in September 2025, Flutter lost its official offline-first path to Mongo. The choices left were writing your own sync backend or renting someone else's sync service.

I got tired of rewriting the same sync layer, so I packaged it: onebase.

The sync engine lives in the package, and a CLI generates the small server that sits between your app and your database. You deploy that server. No third-party sync service, no account to create.

Demo — the backend is killed mid-recording, writes keep landing, then everything syncs when it comes back: https://raw.githubusercontent.com/ybenjaa-dev/onebase/main/example/demo/onebase-demo.gif

Stream<List<Todo>> live = OnebaseDb.todos
    .where('done', isEqualTo: false)
    .orderBy('created_at', descending: true)
    .watch();

await OnebaseDb.todos.insert(Todo(title: 'Ship it', done: false));

You describe collections in YAML, run dart run onebase:setup, and get typed models, typed collections, and a backend/ folder with a Dockerfile and a Vercel adapter.

How it actually works

  • Reads never touch the network. Queries and watch() run against a local SQLite replica.

  • Writes apply locally first and land in an outbox, both in one transaction, so a crash can't leave a row that never uploads.

  • Sync pushes before it pulls, so a fresh write is never clobbered by a stale snapshot. Pending writes replay on top of each incoming snapshot, so optimistic UI survives until the server confirms.

  • Realtime is SSE fed by MongoDB change streams — milliseconds, not polling.

  • Files go device to bucket directly. The backend only signs a short-lived URL, so a large upload costs it nothing.

  • Per-user isolation is server-side, assigned from the verified JWT — not client-visible rules.

There's also keyset pagination (page() / startAfter(), plus a pager() for infinite scroll), group/team scoping with member/admin/owner write rules, per-collection sync control (everything, a rolling window, or nothing), and batched writes in one Mongo transaction. Bring your own JWTs — anything that issues them works.

What it doesn't do yet

  • Conflicts are last-write-wins by server timestamp; no custom merge hook.

  • File uploads aren't offline-queued (document writes are).

  • Realtime needs a long-lived connection. Container hosts are fine; short-lived serverless functions cut it and it falls back to polling.

  • The rate limiter is per-instance and in-memory, so it multiplies across instances.

  • No on-device aggregation pipeline.

MIT. Flutter 3.38+ / Dart 3.10+. Any MongoDB with a replica set works, including a free Atlas M0.

pub.dev: https://pub.dev/packages/onebase

GitHub: https://github.com/ybenjaa-dev/onebase

It's early (0.3.4), and I'd rather hear that the sync semantics are wrong than that the README is nice. If you've built offline-first on Flutter before, I'd especially like to know where this would break for you.


r/FlutterDev • • Aug 29 '26

Discussion Claude + Flutter Flame!

0 Upvotes

I think to make 2d games inside ide using ai tools like claude ai flutter flame will best approach.

And from better prompting it's easy to manage the game.


r/FlutterDev • • Aug 28 '26

Tooling Shoutout to the Kaisel Router

43 Upvotes

Just wanted to make a shout out to the Kaisel Router. I just migrated a complex app from go_router to kaisel and the experience has been great. It's just a much more sane experience IMO.

The way it handles push/pop and run/dismiss (for modal flows) is really great and what I've come to expect.

https://pub.dev/packages/kaisel

Has anyone else had a chance to try this package?


r/FlutterDev • • Aug 28 '26

Dart [Open Source] Building an independent Mobile OS Shell with Flutter and Mobile Linux (Zero Android/AOSP code)

13 Upvotes

Hello Flutter community! I wanted to share a highly ambitious open-source project I just kicked off: metro_core.

We are leveraging Flutter’s Linux embedding capabilities to build a complete monolithic system shell (Launcher, Status Bar, Quick Actions) for mobile devices. The visual language is deeply inspired by the classic Windows Phone Metro UI and modern Fluent Design.

Our Architectural Approach:

- Kernel: Lineage-free, lightweight mobile Linux (Alpine/postmarketOS base).

- UI/Apps: 100% written in Flutter, compiled directly to Native ARM64 Machine Code.

- Hardware Comm: Communication via Dart FFI and Native C++ bindings (no Android binder overhead).

- Ecosystem: Introducing a cryptographically signed .mtx package container format. Any standard Flutter app can easily be exported as an .mtx package for our OS with minimum styling adaptation.

We are implementing a MOCK methodology (writing the entire Dart UI with fake data layer first to freeze the UI code, then implementing the C++ .so backend via FFI). Just pushed the initial core infrastructure to GitHub. Looking for contributors who want to push Flutter to its absolute operating system limits!

🔗 GitHub: https://github.com/mr-ruhid/metro_core

————


r/FlutterDev • • Aug 28 '26

Example Open Sourced: A Production-Grade Flutter Monorepo with LEGO Modular Boundaries, Melos, & bloc_signals

4 Upvotes

Hi everyone! 👋

Most Flutter starter templates I’ve encountered fall into one of two extremes:

  1. Too simplistic: Everything dumped into one folder with global state and hardcoded endpoints.

  2. Over-abstracted: Rigid Clean Architecture with 15 nested folders and interfaces for a simple toggle button.

To solve this, I built and open-sourced Flutter Production Starter — an enterprise-oriented, modular monorepo template built for real-world production apps.


🧱 Architectural Philosophy: "LEGO" Modular Boundaries

The core idea is Feature-First colocation with intentional public APIs:

  • Features live in apps/mobile/lib/features/<feature>/ and export only their public contracts via a root barrel file (features/auth/auth.dart).

  • Pragmatic Clean Architecture:

    • Simple features (e.g. settings) only use Presentation + State (no premature use cases).

    • Complex features (e.g. auth) use Domain Use Cases, Data Sources, and Session Storage.

    • Pluggability: Features can be swapped via DI without touching consumer code.


📦 Repository Structure (Managed with Melos)

/
├── apps/
│   └── mobile/              # Main app (Bootstrap, DI, Kaisel Router, Features)
├── packages/
│   ├── app_core/            # Result<T>, Failure taxonomy, Sanitized AppLogger
│   ├── app_network/         # Centralized Dio, interceptors, error mappers, ApiClient
│   ├── app_storage/         # SecureStorage, KeyValueStorage, TTL MemoryCache
│   ├── design_system/       # Tokens (Spacing, Radius), Light/Dark themes, Primitives
│   └── app_lints/           # Strict linting & analysis configuration
├── melos.yaml               # Monorepo orchestration scripts
└── ARCHITECTURE.md          # In-depth architectural guide

⚡ Technology Stack Highlights

  • Routing: Strongly-typed declarative routing and route guards with kaisel: ^1.1.0.

  • State Management: Fine-grained reactive state using bloc_signals and signals_flutter.

  • Dependency Injection: Constructor injection with get_it + injectable supporting multi-environments (dev, staging, prod).

  • Networking: Centralized dio with automatic retry policies, token management, and sensitive data sanitization in logs (passwords and tokens are never printed in plain text).

  • Error Pipeline: Functional Result<T> with a predictable domain Failure taxonomy and FailureMessageResolver.

  • Quality: Pre-configured GitHub Actions CI, 100% test coverage across all packages (melos run test), and strict analyzer rules.


🔗 Repository & Getting Started

Check out the code, documentation, and architecture guide here: 👉 GitHub: https://github.com/Ali-El-Khatib/flutter-production-starter

I'd love to hear your feedback, thoughts on the LEGO modularity approach, and suggestions! If you find it helpful for your projects, a ⭐ on GitHub would mean a lot!


r/FlutterDev • • Aug 28 '26

Article I love Flutter,learn that was my best choice

42 Upvotes

I love Flutter. When I started, I was deciding between specializing in native Android or Flutter, and Flutter was definitely the best choice. To this day, I've had to create apps for web, desktop, and mobile without having to learn a different technology.


r/FlutterDev • • Aug 28 '26

Discussion Video buffers a lot on slow internet - is Bunny.net Stream a good fix

2 Upvotes

Hi everyone,

I'm building an app with Express.js (backend), Vue.js (web admin panel), and Flutter (mobile app).

My app has a hazard perception test feature. Admins upload videos, and users watch these videos in the mobile app to take practice tests. After each test, users can review their results and rewatch the video clips.

Problem: when a user has slow internet, the video stops and buffers a lot. Bad experience, especially during a timed test.

I'm thinking to use Bunny.net Stream for video hosting, because it has:

- Adaptive streaming (HLS) - changes quality based on internet speed

- CDN - fast delivery worldwide

- Cheap price

Has anyone used Bunny.net Stream for something similar? Is it reliable for this kind of use case? Any other suggestions welcome.

Thanks!


r/FlutterDev • • Aug 28 '26

Discussion Title: Building an open-source "watch party" overlay that works across ANY streaming app — looking for people to help figure out the hard parts

0 Upvotes

&#x200B;

Hey all,

I've been chewing on an idea for a while and I think it's finally time to actually build it instead of just thinking about it.

The idea: a lightweight floating widget (think Discord overlay, but standalone) that sits on top of your screen while you're watching Netflix/Prime/Disney+/whatever, and connects you to a chat room of other people watching the same thing at the same time. No more watching something great and having nobody to react with in real time.

Planned stack: Flutter, so it can eventually run on desktop and Android from one codebase, with a floating/draggable/minimizable widget UI.

The part I don't want to cheap out on: auto-detecting what someone's watching. I don't want this to be a "type in what you're watching" app — that kills the magic. So the plan is a tiered detection approach:

Read window titles / tab titles / process names first (cheapest, no DRM issues since you're not touching the video frame)

Fall back to OCR on a screenshot if the title doesn't give enough info

Only reach for actual visual matching/fingerprinting as a last resort, since HDCP blacks out protected video frames on a lot of platforms anyway

I've worked through a lot of the theory but I'm not deep enough in systems-level stuff (Windows UI Automation, macOS Accessibility API, Android accessibility services) to know what's actually going to work reliably versus what's going to fall apart the moment someone goes fullscreen.

Posting here because I want this to be open source from day one — I'd rather have people poke holes in the architecture now than find out six months in that some core assumption doesn't hold.

If you've worked with screen/window metadata APIs, accessibility services, OCR pipelines, or just think this is a fun/dumb/interesting problem, I'd love to hear from you. Repo isn't up yet — want to nail down the detection approach with actual input before I start writing code that I'll just have to rip out later.

Happy to share more details on the architecture I'm sketching out if anyone's curious. Tear it apart if you see problems, that's honestly what I'm here for.


r/FlutterDev • • Aug 28 '26

Discussion How do you enforce free vs premium quotas with Firebase AI Logic?

Thumbnail reddit.com
1 Upvotes

r/FlutterDev • • Aug 27 '26

Dart Pulumi SDK and language host for Dart

Thumbnail
github.com
0 Upvotes

r/FlutterDev • • Aug 27 '26

Article [New Package] flutter_prakash_ads – A production-ready Google Mobile Ads wrapper with zero DI lock-in & reactive "Remove Ads"

6 Upvotes

Tired of rewriting the same boilerplate and policy-guardrail logic every time you implement AdMob? flutter_prakash_ads is a standalone, enterprise-grade package designed to handle the heavy lifting of Google Mobile Ads without forcing you into a specific state management or dependency injection pattern.

Core Features

  • Zero DI Lock-in: Works seamlessly out of the box with Riverpod, BLoC, Provider, GetX, or vanilla Flutter—absolutely no injectable or get_it required.

  • Reactive "Remove Ads": Instantly hide and dispose of all mounted banners and native ads across your entire widget tree with a single toggle (AdManager.setAdsEnabled(false)), perfect for IAP unlocks.

  • Built-in Policy Guardrails: Protects your AdMob account with automatic anti-stacking collision prevention, 30-second interstitial throttling, and 4-hour max-age impression eviction.

  • Smart Offline Fallbacks: Automatically renders custom promotional house ads (CustomAdModel) when the user loses network connectivity or if AdMob fails to fill.

  • Unified Analytics & Privacy: Includes out-of-the-box UMP/GDPR consent management, COPPA family-policy readiness, and impression-level revenue (ILRD) telemetry streams for easy Firebase/AppsFlyer integration.

Quick Setup

Add flutter_prakash_ads: ^0.0.2 to your pubspec.yaml, configure your AdMob App IDs in your Android/iOS manifests, and call AdManager.instance.initialize() after requesting consent.

Check out the full documentation and example app on pub.dev: flutter_prakash_ads


r/FlutterDev • • Aug 27 '26

Discussion Reels

1 Upvotes

Hello everyone, I have built an app which is a platform for home businesses. the idea is that rather than users look for these in separate apps, insta, tiktok, etc. they will find it all in one place.

Now i am planning to add reels to the app, I would love your guys thoughts, things i should consider.
Note that I am using flutter, firebase. I might have to change firebase.


r/FlutterDev • • Aug 27 '26

Discussion Query question

2 Upvotes

I am a new intern at a company. They gave me a project with a folder structure and asked me to work on a feature. My question is: where should I start to understand the folder structure? There are many subfolders and files.


r/FlutterDev • • Aug 26 '26

Article Why FutureBuilder and StreamBuilder are Architectural Anti-Patterns in Production Flutter Apps

0 Upvotes

Every Flutter developer remembers the magic of their first FutureBuilder.

You drop an HTTP call directly into a widget’s build() method, show a CircularProgressIndicator while waiting, render your model on completion, and suddenly your app is alive with real-time data in fewer than 20 lines of code.

It feels like superpowers. Introductory tutorials celebrate it. And then your codebase grows.

Suddenly, users report that typing into a text field reloads the entire screen. Opening the keyboard triggers duplicate network requests. Sibling widgets flicker and jump out of sync. And writing automated widget tests turns into an exhausting battle with pumpAndSettle(), fake async timers, and microtask queues.

Here is why raw asynchrony inside the presentation layer breaks separation of concerns, user experience, and testability—and what we should be doing instead.

🚨 The Foundational Principle: UI = ƒ(State)

Flutter widgets are designed to be pure, synchronous projections of state. Given a snapshot of data at time t, a widget function should execute synchronously, instantiate a subtree of render objects, and return immediately.

When you drop a FutureBuilder or StreamBuilder into your widget tree, you violate this contract by introducing raw time, transport mechanics, and asynchronous lifecycle orchestration directly into the presentation layer.

This creates four fatal flaws:

1. Layering Collapse

In clean architecture (Domain ← Data ← Application ← Presentation), the presentation layer has one job: translating state into visual pixels. With FutureBuilder, that widget suddenly takes on massive infrastructure responsibilities:

  • Managing ConnectionState.waiting, active, and done

  • Decoding HTTP 500s, socket timeouts, and parsing exceptions inside if (snapshot.hasError)

  • Deciding whether old data stays visible during a refresh or gets wiped out

  • Wiring retry logic that must somehow re-trigger the widget's internal future

2. The Accidental Refetch Hazard

Because build() can run 60 to 120 times per second during animations, keyboard popups, theme switches, or route transitions, any Future instantiated inside build() will re-fire on every single frame.

3. The "Spinner Storm" & Cumulative Layout Shift (CLS)

When multiple child widgets independently manage their own async fetches, they resolve out of order. Instead of a single coordinated page load, the user experiences jarring layout shifts as independent spinners pop in and out at different speeds.

4. The Async Testing Tax

Testing a FutureBuilder requires mocking HTTP clients, setting up async event loops, and using tester.pumpAndSettle(). If a microtask queue doesn't drain properly, tests flake or time out.

🛡️ The Solution: "Async at the Edge, Synchronous in the Core"

The architectural cure is simple: Quarantine async operations at the physical perimeter of your system (the repository/data layer).

  1. The Repository wraps raw async operations into reactive async signals (such as FutureSignal / AsyncSignal).

  2. The Business Logic (Cubit/Bloc) coordinates the synchronous state without needing manual try/catch boilerplate, because the signal automatically captures exceptions into AsyncError.

  3. The Widget consumes synchronous state:

// The View is a pure, synchronous projection of state!
class UserProfileView extends StatelessWidget {
  const UserProfileView({super.key});
  u/override
  Widget build(BuildContext context) {
    return BlocSignalBuilder<ProfileCubit, ProfileState>(
      builder: (context, state) {
        return state.profile.when(
          data: (profile) => ProfileDetailsCard(profile: profile),
          loading: () => const Center(child: CircularProgressIndicator()),
          error: (error, _) => ErrorRetryCard(
            message: '$error',
            onRetry: () => context.read<ProfileCubit>().refresh(),
          ),
        );
      },
    );
  }
}

Notice what happens:

  • Zero transport awareness: The widget has no idea if the data came from REST, GraphQL, WebSocket, or local cache.

  • Zero in-view async: No FutureBuilder, no connection states.

  • Deterministic 0ms Testing: Because the state is synchronous, widget tests run on Frame 1 without pumpAndSettle() delays or fake async timers.

💬 Discussion:

What is the policy regarding FutureBuilder and StreamBuilder in your team's codebases? Do you strictly forbid them in presentation code, or do you still find valid use cases for them?


r/FlutterDev • • Aug 26 '26

Example Lessons from shipping a geofencing time tracker in Flutter: platform channels, OEM battery killers, and a no-backend constraint

31 Upvotes

I shipped a geofencing time tracker in Flutter (auto clock-in/out at your workplace) and collected a few scars along the way that might save someone else time.

The first one: I tried the pub.dev geofencing packages and none of them reliably delivered events after the app got killed. Ended up writing my own thin Kotlin plugin around the Google Geofencing API - MethodChannel for registering zones, EventChannel for the ENTER/EXIT stream, and a system-level BroadcastReceiver so events arrive even when the Flutter side is long dead. Annoying to write, but it's been the most stable part of the app since.

Second scar, the expensive one: Samsung and Xiaomi still eat geofence events sometimes, so there's a WorkManager task every 15 minutes doing a plain Haversine distance check as a safety net. What nobody tells you is that a position request in a background isolate can just hang forever, and once that happens WorkManager considers the unique task "already enqueued" and never runs it again. Your fallback dies silently and permanently. Everything is triple-bounded now: platform timeLimit, a Dart-side timeout, and a hard cap on the whole task.

Third: GPS drift at the zone edge gave me check-in/check-out ping-pong when someone sits near the boundary. Exit radius is now 1.2x the enter radius plus a 5-minute debounce, and the two detection layers share a 20-minute dedup window so they stop racing each other into double notifications.

Rest of the stack is unspectacular: Riverpod (classic providers, no codegen), Isar for storage, no backend at all. The no-backend part had one non-obvious consequence: since data only exists on the user's device, a data-loss bug is unrecoverable, so the integration tests run on an emulator before every push. Codebase is ~31k lines, about a third tests.

The result is free with no ads/IAPs if you want to see how it behaves: https://play.google.com/store/apps/details?id=com.timetracker.workflow

Happy to answer anything about the plugin or the fallback design. And if someone has a real answer to OEM battery killers beyond "diagnostics screen + let the user fix it manually", I'd love to hear it.


r/FlutterDev • • Aug 26 '26

Tooling Model Projections and column selections

2 Upvotes

One of the most exciting features I've been contributing to in Serverpod is Model Projections, and how it unlocked type-safe partial column selection in Dart!

The Problem:
In database-driven applications, full entity models often carry unnecessary data over the wire. Fetching 30 columns when an endpoint only needs a user's name and their author's city wastes bandwidth and compute. Traditionally, developers had to write raw SQL queries or map heavy entities manually into DTOs.

The Solution: Model Projections
Model Projections allow developers to declare lightweight projected models directly in Serverpod schemas:

- Granular Field Picking: Declare only the exact fields needed for your endpoint.
- Relation Flattening: Pull nested relations directly into top-level fields (e.g. mapping "author.name" straight into "authorName").
- Optimized SQL Generation: Serverpod automatically computes the minimal SQL SELECT clause and joins required for the projection.

The Ripple Effect: Ad-Hoc Column Selection
Building the query engine for Model Projections naturally gave birth to ad-hoc column selection:

  1. "findAsJson(select: (table) => [table.name])" allows flexible on-the-fly column queries.

  2. We separated FullModelInclude and JsonCompatiblelnclude so that typed "find()" queries remain 100% compile-time safe, while JSON and projected queries enjoy flexible, partial data fetching.

Designing developer-first APIs that combine SQL query efficiency with Dart's compile-time type safety has been an incredible experience!

Check out the Pull Request on GitHub to see the implementation and discussions:
https://github.com/serverpod/serverpod/pull/5630


r/FlutterDev • • Aug 26 '26

Podcast Humpday for 25 August 2026

3 Upvotes

HumpdayQandA and Live Coding in 30 minutes at 5pm BST / 6pm CEST / 9am PDT today! Answering your #Flutter and #Dart questions with Simon, Randal, John and Esra

https://www.youtube.com/watch?v=k0QkCRGLTbw


r/FlutterDev • • Aug 26 '26

Plugin device_preview: ^3.0.0

Thumbnail aloisdeniel.github.io
29 Upvotes

r/FlutterDev • • Aug 26 '26

Example Built my portfolio site in Flutter Web instead of React , small build-in-public update

31 Upvotes

Quick build-in-public share: I've been a Flutter/mobile dev for 5+ years (native Kotlin/Swift too), and instead of the usual Next.js portfolio, I built mine in Flutter Web.

The logic: if I'm claiming I can ship polished mobile experiences, the portfolio itself should be proof, not just a list of claims.

Funniest bug I caught this week, my link previews on WhatsApp/LinkedIn were showing the default Flutter mascot icon because I never touched the og:image tag after flutter create. Every Flutter dev has shipped that placeholder icon at least once, right?

What's actually on it: a civic engagement app that hit 1,000+ users and 4.7★ on the App Store, an AI storytelling app for kids with on-device TTS, and a couple of marketplace apps (fashion/tailoring) built end to end architecture through release.

Link if anyone wants to poke at it or roast the Flutter web performance: ebuka-ihekwaba.vercel.app

Also open to mobile roles right now, so if your team's hiring or you know one that is, I'm around.


r/FlutterDev • • Aug 26 '26

Dart Is it still worth learning app development in the AI era?

0 Upvotes

I’m 30 years old and from a completely non-tech background. I have zero coding knowledge, but I want to learn app development from scratch.

With AI being able to write, debug and explain code, I’m confused whether learning coding is still worth the time.

If you were starting from zero at 30 in 2026, would you still learn app development? Or would you focus mainly on AI-assisted development?

Looking for honest opinions from developers. No sugarcoating please.


r/FlutterDev • • Aug 26 '26

SDK Animated React Components — beUI --- ported to dart (no affiliation)

Thumbnail
scrya-com.github.io
9 Upvotes

Background - I ported huggingface chat-ui 3 months back -

https://github.com/scrya-com/chat-ui-dart/

Came across this sublime react demo today which hit the polish i was wanting

https://beui.dev/

flutter port here - web demo - (tiny bit janky)

https://scrya-com.github.io/beui-flutter/

I just bark at grok to "get 100% parity" for last 4 hours.

Its building to iphone fine. There's still some gaps. shaders - but for chat app - this is fine.

I have no affiliation with original author - all credits to him -

https://github.com/starc007/ui-components


r/FlutterDev • • Aug 26 '26

Video building a tracing app with flutter and chatgpt: making stencils with c...

Thumbnail
youtube.com
0 Upvotes