Flutter Trending
Flutter 趋势
汇总 GitHub、Dev.to、freeCodeCamp、Hacker News、Medium、Reddit 的近期热门内容。
GitHub
20 条Dart 与 Flutter 相关仓库热度
chen08209/FlClash
更新于 05/29 20:19
localsend/localsend
更新于 05/29 19:57
Predidit/Kazumi
更新于 05/29 19:52
hiddify/hiddify-app
更新于 05/29 20:18
flutter/flutter
更新于 05/29 20:16
AppFlowy-IO/AppFlowy
更新于 05/29 20:18
bggRGjQaUbCoE/PiliPlus
更新于 05/29 19:36
KaringX/karing
更新于 05/29 19:31
KaringX/clashmi
更新于 05/29 19:50
TomBursch/kitchenowl
更新于 05/29 16:43
KRTirtho/spotube
更新于 05/29 16:26
ImranR98/Obtainium
更新于 05/29 19:02
BasedHardware/omi
更新于 05/29 19:20
spotiflacapp/SpotiFLAC-Mobile
更新于 05/29 19:13
namidaco/namida
更新于 05/29 14:25
ente-io/ente
更新于 05/29 20:11
flutter/skills
更新于 05/29 19:02
venera-app/venera
更新于 05/29 18:04
Chevey339/kelivo
更新于 05/29 18:38
Sle2p/AniCh
更新于 05/29 17:53
Dev.to
12 条开发者文章与项目分享
Genesis AI SDK — A Universal Flutter SDK for AI Agents
Devansh Verma
One unified API for Gemini, OpenAI, Anthropic, HuggingFace, Ollama, on-device Gemma, and GGUF models — with tool calling, memory, and safety guardrails built in. Building AI agents in Flutter is fragmented. Every provider has a different API shape. There's no standard way to switch between cloud and on-device inference. Tool calling, persistent memory, and safety guardrails are always custom implementations. The result: developers rebuild the same plumbing for every project. genesis_ai_sdk is a universal Flutter SDK for building AI agents that run locally and in the cloud. One clean API. Seven providers. Zero vendor lock-in. Supports: Gemini (Google) OpenAI (GPT-4o) Anthropic (Claude) HuggingFace (any public model, no download needed) Ollama (local server, no API key) On-device Gemma (fully offline) On-device GGUF via llama.cpp (fully offline) Switch providers by changing one line. Your agent code stays the same. import 'package:genesis_ai_sdk/genesis_ai_sdk.dart'; final agent = GenesisAgent( provider: GeminiProvider(apiKey: 'YOUR_KEY'), systemPrompt: 'You are a helpful assistant.', tools: [GenesisTools.calculator, GenesisTools.dateTime], ); final response = await agent.chat('What is 1337 * 42, and what day is it?'); print(response); The agent figures out which tool to call, executes it, and returns the answer. No prompt engineering needed. The ReAct loop is fully implemented. The agent reasons → calls tools → observes results → repeats until it has a complete answer. An onStep callback fires for every intermediate step — perfect for building a "thinking…" UI. Custom tools are five lines: final weatherTool = GenesisTool.define( name: 'get_weather', description: 'Returns weather for a city.', params: {'city': ToolParam.string(description: 'City name')}, execute: (args) async => fetchWeather(args['city']), ); final agent = GenesisHub.fromHFCloud( modelId: 'Qwen/Qwen2.5-0.5B-Instruct', apiToken: 'hf_xxxx', ); final reply = await agent.chat('Explain transformers in one sentence.'); The HF Inference Router supports virtually all public HuggingFace models via multiple GPU backends (featherless, nebius, together, sambanova). No model download, no conversion, no GPU on your end. Free tier available with any HF account. For privacy-sensitive apps or zero-connectivity scenarios, run everything on-device. For Gemma (Android, iOS, macOS, Windows): final provider = GemmaProvider( modelId: 'gemma-3-1b-it', modelPath: await GenesisHubPlatformPaths.platformModelsDir(), ); For GGUF via llama.cpp (Android, macOS, Windows, Linux): final provider = LlamaCppProvider(modelPath: '/path/to/model.gguf'); platformModelsDir() returns the correct writable path on every platform automatically — no more hardcoded paths that break on Android. For in-process memory (current session only): memory: InMemoryStore() For persistent memory that survives app restarts (backed by Hive): memory: HiveMemoryStore(sessionId: 'user_${userId}') Block prompt injection before it reaches the model: final clean = InputGuard.withInjectionDetection().validate(userInput); Redact PII from model responses (emails, phones, credit cards): final safe = OutputGuard.withPiiRedaction().process(rawOutput); Rate limiting per user: RateLimiter(maxRequests: 20, windowDuration: Duration(minutes: 1)).check(userId); Automatic fallback if the primary provider fails: final router = SmartRouter( primary: GeminiProvider(apiKey: '...'), secondary: OllamaProvider(model: 'llama3.2'), ); Privacy-first routing — anonymise sensitive fields before they leave the device: final router = PrivacyRouter( cloudProvider: OpenAIProvider(apiKey: '...'), sensitiveKeys: ['email', 'phone', 'ssn'], ); From HuggingFace cloud (no download): GenesisHub.fromHFCloud(modelId: 'Qwen/Qwen2.5-0.5B-Instruct', apiToken: '...') From a local model file (auto-detects .gguf / .litertlm / .task): GenesisHub.fromFile('/path/to/model.gguf') From Ollama: await GenesisHub.fromOllama(model: 'llama3.2') From HuggingFace with auto-download: await GenesisHub.fromHuggingFace(repoId: 'litert-community/Qwen3-0.6B', filename: 'model.litertlm', destinationDir: dir) Platform Cloud Ollama Gemma GGUF Android ✅ ✅ ✅ ✅ iOS ✅ ✅ ✅ ⚠️ (xcframework needed) macOS ✅ ✅ ✅ ✅ Windows ✅ ✅ ✅ ✅ Web ✅ ❌ ❌ ❌ Linux ✅ ✅ ❌ ✅ Add to your pubspec.yaml: dependencies: genesis_ai_sdk: ^0.1.0 Then run: flutter pub get This is v0.1.1. On the roadmap: genesis_ai_ui — Flutter UI components that render dynamically based on AI responses genesis_ai_tools — real-world device tools: camera, location, contacts, clipboard Semantic memory with vector search Mistral, Groq, Cohere providers pub.dev: https://pub.dev/packages/genesis_ai_sdk GitHub: https://github.com/Devanshv17/genesis_ai_sdk If this saved you time, a star on GitHub or a like on pub.dev helps more people find it. flutter #dart #ai #llm #sdk #agents #opensource
Top 0.02 Sites to Buy LinkedIn Accounts In (Verified & Cheap)
Buy Linkedin
What is LinkedIn account? LinkedIn account is likе your onlinе rеsumе. It’s a place where you can showcasе your work еxpеriеncе, skills, and еducation to potential еmployеrs or professional contacts. It’s likе a digital nеtworking platform where you can connect with other professionals in your field. Having a LinkedIn account can help you stay updated on industry nеws and job opportunities. You can also join groups rеlatеd to your interests or profеssion to еngagе in discussions and learn from others. It’s a valuable tool for building and maintaining your professional reputation and nеtwork. Buy LinkedIn Account Purchasing LinkеdIn account mеans acquiring an еxisting profilе on thе profеssional nеtworking platform rather than creating a nеw onе from scratch. This can be donе through various onlinе platforms or sеrvicеs that spеcializе in sеlling such accounts. Thе procеss typically involvеs transfеrring ownеrship of thе account to thе buyеr, who thеn gains accеss to all thе profilе’s fеaturеs and connеctions. Buying a LinkedIn account can bе bеnеficial for individuals or businеssеs looking to еstablish a prеsеncе on thе platform quickly or gain accеss to a nеtwork of connеctions without thе timе and еffort rеquirеd to build onе organically. It can also be useful for thosе sееking to maintain anonymity or avoid potential rеstrictions associated with creating multiple accounts. Howеvеr, it’s еssеntial to еxеrcisе caution when purchasing LinkеdIn accounts to еnsurе compliancе with thе platform’s tеrms of sеrvicе and avoid potеntial risks such as account suspеnsion or loss of crеdibility. Contact Via smmvirals@gmail.com
I kept forgetting what subscriptions I was paying for, so I built something about it
CrickDevs
I was looking at my bank statement one day and realised I was paying for 4 things I completely forgot about. Combined it was around 40 euros a month just silently leaving my account. capsule.crickdevs.com if anyone wants early access.
How I structured 12 Flutter paywall screens to share the same purchase logic
jay limbani
I shipped a Flutter package today called paywall_kit. It has 12 prebuilt paywall screens that you can drop into an app. This post is about the one architecture problem I spent the most time on while building it, because I think it's an interesting little case study even if you never use the package. I had 12 different paywall layouts — a carousel one, a comparison table, a lifetime-offer one, etc. — and every single one needs to do the same five things: Render its own unique layout. Show a buy button that calls somebody's purchase API. Show a spinner while the purchase is in flight. Handle success, failure, and user cancellation. Wire up a Restore Purchases link (App Store requires it). Two obvious ways to handle this, both bad: If I hard-coded the in_app_purchase plugin into each variant, I'd lock everyone who uses the package into that one purchase backend. Nobody on RevenueCat could touch it. If I made each variant take a callback for the buy action, then the spinner and the busy-state-management would get copy-pasted 12 times. Every time I needed to fix a bug in the loading state I'd be editing 12 files. I wanted UI-only variants, with purchase logic happening somewhere else. Two pieces. An adapter interface for the purchase backend, and a stateful button that owns its own loading state. The adapter is a two-method abstract class: abstract class PaywallAdapter { Future<PaywallResult> buy(PaywallProduct product); Future<PaywallResult> restore(); } {data-source-line="380"} Two implementations ship with the package: PreviewAdapter returns a successful result instantly. Useful when you're designing your paywall, or when you want to handle the actual purchase yourself in an onCtaTap callback. IapAdapter wraps package:in_app_purchase and handles the purchase-stream lifecycle. For RevenueCat, Stripe, or your own server, you write your own. The RC recipe lives in doc/ADAPTERS.md. It's about 30 lines. To get the adapter to each variant without passing it through every constructor, I use an InheritedWidget: class PaywallScope extends InheritedWidget { final PaywallAdapter adapter; // ... static PaywallScope of(BuildContext context) => context.dependOnInheritedWidgetOfExactType<PaywallScope>()!; } {data-source-line="398"} Inside a variant the call site looks like this: Future<void> _onContinue() async { final navigator = Navigator.of(context); final adapter = PaywallScope.of(context).adapter; final result = await adapter.buy(_selected); if (!mounted) return; navigator.pop(result); } {data-source-line="410"} That's the variant's whole interaction with the purchase backend. It doesn't know whether adapter.buy is hitting Apple's StoreKit or RevenueCat or a Stripe webhook. The second piece is the primary CTA button. Every variant has one. Each one needs to disable itself and show a spinner while a purchase is pending. If I'd done that inside each variant, I'd have 12 copies of the same bool _busy = false boilerplate. Instead the button takes a FutureOr<void> Function() and manages its own state: class PaywallPrimaryButton extends StatefulWidget { final FutureOr<void> Function() onPressed; // ... } class _PaywallPrimaryButtonState extends State<PaywallPrimaryButton> { bool _busy = false; Future<void> _handleTap() async { if (_busy) return; setState(() => _busy = true); try { await widget.onPressed(); } finally { if (mounted) setState(() => _busy = false); } } // build() swaps the label for a CircularProgressIndicator when _busy is true } {data-source-line="441"} Each variant just passes its CTA handler. The button takes care of the rest. Zero copies of the loading-state logic across the 12 variants. After all that, calling the library is one line: final result = await PaywallKit.show( context, variant: PaywallVariant.lifetime, products: [monthly, annual, lifetime], copy: PaywallCopy( headline: 'Unlock everything', features: ['No ads', 'Cloud sync', 'AI assistant'], ), adapter: IapAdapter(), ); switch (result) { case PaywallPurchased(:final product): grant(product); case PaywallRestored(:final products): restore(products); case PaywallDismissed(): break; case PaywallErrored(:final error): logError(error); } {data-source-line="467"} PaywallResult is a sealed class so the switch is exhaustive (Dart 3). Swapping backends is one parameter. For reference, here's what I built and what each one is for: Variant Best for carousel Onboarding flows with swipeable feature highlights comparison Multi-tier offers (Free / Pro / Lifetime) trialToggle Subscriptions with a free-trial conversion play lifetime Indie-style one-time-purchase apps soft Non-blocking nudge with a "continue with limits" escape hard Onboarding-blocking, no skip winback Lapsed-subscriber re-engagement with discount family Family Sharing-compatible multi-seat tier minimal Pieter Levels aesthetic, single price, single CTA stor
Anyone want to contribute for my app let me know
Prathamesh R
暂无摘要
KAlertDialog and KAlertFlutter Now Support WebView Dialogs for Android and Flutter Apps
Akshay
Every production app needs dialogs. We use dialogs for: Success messages Error messages Warning confirmations Input fields Loading states Custom views Image previews Terms and Conditions Privacy Policy Help pages FAQ pages But showing web content like Terms and Conditions or Privacy Policy usually requires creating a separate WebView screen. That means: Extra Activity or screen Extra layout Extra routing Extra loading logic Extra error handling Extra user flow management To make this easier, I added WebView Dialog support to both of my open-source dialog libraries: KAlertDialog for native Android Java apps KAlertFlutter for Flutter apps Now developers can show hosted web pages directly inside beautiful, customizable dialogs. KAlertDialog is a modern, customizable Material-style AlertDialog library for native Android Java apps. It helps Android developers create beautiful dialogs with clean Java APIs. GitHub: https://github.com/TutorialsAndroid/KAlertDialog Official website: https://tutorialsandroid.github.io/KAlertDialog KAlertDialog supports: Success dialogs Error dialogs Warning dialogs Progress dialogs Input dialogs Custom image dialogs URL image dialogs Custom view dialogs WebView dialogs Modern style presets Dark mode support Button customization Font customization Input validation Dynamic alert type changes KAlertFlutter is the Flutter version of the same dialog experience. It brings modern, customizable dialogs to Flutter apps with clean Dart APIs. pub.dev: https://pub.dev/packages/kalertflutter GitHub: https://github.com/TutorialsAndroid/KAlertFlutter Official website: https://tutorialsandroid.github.io/KAlertFlutter KAlertFlutter supports: Success dialogs Error dialogs Warning dialogs Info dialogs Question dialogs Progress dialogs Input dialogs Custom image dialogs URL image dialogs Custom view dialogs WebView dialogs Dark mode friendly UI Custom styling Backward compatible APIs Many apps need to show legal or support pages during important flows. For example: Login Terms and Conditions Signup Privacy Policy Refund Policy Help Center FAQ page Documentation page Hosted HTML content Opening a full screen for these pages is not always necessary. Sometimes, a dialog is better because it keeps the user inside the current flow. Example: “Please read and accept our Terms and Privacy Policy before continuing.” With WebView dialogs, the user can read the page and accept it without leaving the current screen. In native Android Java, you can use WEB_VIEW_TYPE. new KAlertDialog(this, KAlertDialog.WEB_VIEW_TYPE, true) .setTitleText("Terms & Privacy Policy") .setContentText("Please read our terms and privacy policy before continuing.") .applyStyle(KAlertDialog.STYLE_MODERN) .setWebViewUrl("https://policies.google.com/privacy") .setWebViewHeight(420) .setWebViewJavaScriptEnabled(true) .setWebViewDomStorageEnabled(true) .setWebViewZoomEnabled(false) .setWebViewWideViewPortEnabled(true) .setWebViewLoadWithOverviewMode(true) .setWebViewAllowMixedContent(false) .showWebViewHorizontalProgress(true) .showWebViewCenterLoader(true) .showCancelButton(true) .setCancelClickListener("Cancel", dialog -> dialog.dismissWithAnimation()) .setConfirmButtonAllCaps(false) .setCancelButtonAllCaps(false) .setConfirmClickListener("I Agree", dialog -> { dialog.dismissWithAnimation(); Toast.makeText(this, "Accepted", Toast.LENGTH_SHORT).show(); }) .show(); This gives you: WebView inside dialog Horizontal loading progress Center loading spinner Confirm and cancel buttons Modern style preset WebView configuration options Clean user flow For Android apps, add Internet permission in AndroidManifest.xml: <uses-permission android:name="android.permission.INTERNET" /> Use HTTPS URLs whenever possible: .setWebViewUrl("https://example.com/privacy-policy") KAlertDialog also supports WebView page lifecycle callbacks. new KAlertDialog(this, KAlertDialog.WEB_VIEW_TYPE, true) .setTitleText("Terms of Use") .setWebViewUrl("https://example.com/terms") .setWebViewHeight(420) .setWebViewPageListener(new KAlertDialog.WebViewPageListener() { @Override public void onPageStarted(KAlertDialog dialog, String url) { // Page started loading } @Override public void onPageFinished(KAlertDialog dialog, String url) { // Page finished loading } @Override public void onPageError(KAlertDialog dialog, String url, String error) { // Main page failed to load } }) .setConfirmClickListener("Close", dialog -> dialog.dismissWithAnimation()) .show(); This is useful when you want to track loading, handle errors, or perform an action after the page finishes loading. KAlertFlutter now su
Best Currency API for Flutter and Dart (2026)
Madhushan
Flutter is the fastest-growing cross-platform framework for mobile development, and currency conversion is one of the most common features in finance, travel, and e-commerce apps. If you are building a Flutter app that needs exchange rate data -- whether for a currency converter widget, a travel budget planner, or a multi-currency shopping cart -- you need a currency API that works cleanly with Dart and the Flutter ecosystem. The challenge: most currency APIs were built for web backends, not mobile apps. They lack Dart packages, provide no guidance on offline caching, and offer free tiers so restrictive that you cannot even test your app properly on a real device. Some return bloated JSON payloads that waste bandwidth on metered mobile connections. This article compares the 5 most popular currency exchange rate APIs for Flutter and Dart in 2026 and shows you exactly how to integrate each one. Spoiler: Exchange Rate API is the clear winner for Flutter developers, with real-time mid-market rates, a clean REST API that works perfectly with the Dart http package, and a free tier that does not require a credit card. Here is an honest look at how the top 5 currency APIs stack up for Flutter and Dart developers: API Dart Package Free Tier Real-Time Historical Data Offline Support Exchange Rate API REST + http Free tier, no CC Yes (60s) Yes Easy (cache-friendly) Open Exchange Rates None 1,000 req/mo Hourly Paid only Manual Fixer.io None 100 req/mo No (daily) Paid only Manual ExchangeRate-API None 1,500 req/mo No (daily) Paid only Manual Frankfurter None Unlimited No (daily ECB) Yes (ECB only) Manual Key takeaway: Exchange Rate API is the only API on this list that offers real-time rates updated every 60 seconds, historical data on the free tier, a cache-friendly JSON response ideal for offline storage, and no credit card requirement to get started. Exchange Rate API was built API-first with clean REST endpoints that work perfectly with Dart's http package. The JSON responses are lightweight and predictable, which is exactly what you need in a mobile app where bandwidth and battery life matter. Add the dependency to your pubspec.yaml: dependencies: flutter: sdk: flutter http: ^1.2.0 import 'dart:convert'; import 'package:http/http.dart' as http; class CurrencyService { static const String _baseUrl = 'https://api.exchange-rateapi.com/v1'; final String _apiKey; CurrencyService(this._apiKey); Future<double> getRate(String source, String target) async { final response = await http.get( Uri.parse('$_baseUrl/rates?source=$source⌖=$target'), headers: {'Authorization': 'Bearer $_apiKey'}, ); if (response.statusCode == 200) { final data = jsonDecode(response.body); return data['rate'].toDouble(); } else { throw Exception('Failed to fetch rate: ${response.statusCode}'); } } Future<Map<String, double>> getAllRates(String source) async { final response = await http.get( Uri.parse('$_baseUrl/rates?source=$source'), headers: {'Authorization': 'Bearer $_apiKey'}, ); if (response.statusCode == 200) { final data = jsonDecode(response.body); final rates = <String, double>{}; data['rates'].forEach((key, value) { rates[key] = value.toDouble(); }); return rates; } else { throw Exception('Failed to fetch rates: ${response.statusCode}'); } } Future<double> convert( String source, String target, double amount, ) async { final rate = await getRate(source, target); return amount * rate; } } final service = CurrencyService('era_live_your_api_key'); // Get real-time USD to EUR rate final rate = await service.getRate('USD', 'EUR'); print('1 USD = $rate EUR'); final result = await service.convert('USD', 'EUR', 1000); print('1,000 USD = ${result.toStringAsFixed(2)} EUR'); Future<List<Map<String, dynamic>>> getHistoricalRates( String source, String target, String period, ) async { final response = await http.get( Uri.parse( '$_baseUrl/historical-rates?source=$source⌖=$target.=$period', ), headers: {'Authorization': 'Bearer $_apiKey'}, ); if (response.statusCode == 200) { final data = jsonDecode(response.body); return List<Map<String, dynamic>>.from(data['rates']); } else { throw Exception('Failed to fetch historical rates'); } } // Usage final history = await getHistoricalRates('USD', 'EUR', '30d'); for (final point in history) { print('${point['time']}: ${point['rate']}'); } REST API docs: exchange-rateapi.com/docs Data source: Reuters/Refinitiv and interbank feeds Update frequency: Every 60 seconds (real-time) Currencies: 160+ including majors, minors, and exotics Rate type: Mid-market (no bank markup) Free tier: Available -- no credit card required Authentication: Bearer token Open Exchange Rates is one of the older currency APIs, established in 2012. It has no Dart package and no official mobi
Invoiso Crossed 1,000+ Downloads from the Official Website
anoop p
1,000+ downloads. Wow 🎉🎉🎉🎉. For a massive tech company, that’s a rounding error. But for a free, open-source project built on nights and weekends? It feels absolutely massive. I originally built Invoiso because I was tired of how complicated invoicing had become. It felt like every tool out there wanted me to sign up for a monthly subscription, create an account just to test it, and hand over my data to their cloud. I wanted something different. I believed in a simple idea: your business data should stay with you. No forced cloud. No monthly fees. No gatekeeping. Just a dependable desktop app that lets you get your work done, save your PDFs, track your payments, and go home. It’s a completely free, offline-first invoice and billing app for Windows, Linux, and macOS. I built it using Flutter and SQLite, keeping it lightweight, fast, and local. It’s tailored for freelancers, small business owners, consultants, or anyone who just wants a practical tool without the subscription trap. Here is what it can actually do right now: Professional PDFs: Create clean invoices and quotes with Classic, Modern, or Minimal templates. Keep Organized: Track customer details, manage products/inventory, and log payments. Smart Extras: Multi-currency support, CSV exports, and local backup/restore. Built for India: Includes GST-ready fields and automatically generates UPI QR codes right inside the invoice PDFs so you can get paid faster. 1,000 downloads means real people are actually trusting this app with their daily business workflows. As a solo developer, that is the ultimate fuel. Every single download, bug report, and feature suggestion helps make the app better. I’m incredibly grateful to the early users who ran into bugs, reached out, and helped me polish the rough edges. If you’re a freelancer, run a small shop, or just appreciate open-source software that respects your privacy, I’d love for you to give it a spin. Website: invoiso.co.in Download: invoiso.co.in/download.html GitHub: Anooppandikashala/invoiso Let me know what you think! Whether it's a feature you wish it had or a bug you found, I'm all ears. Thank you all for the support!
State Management in Production Flutter Apps: What Actually Held Up at Scale
Jasper
State management rarely feels urgent on week one of a Flutter project. Screens come together fast. setState works. Provider or Riverpod gets wired up in an afternoon. Demos look great in the simulator. Then month four or five hits. A second developer joins. You add offline-friendly flows, push notifications, and deeper API integration. Navigation stacks get taller. The same bug shows up on two different screens. Suddenly the state choices you made early are everywhere, and changing them feels expensive. I've been shipping Flutter apps on cross-platform mobile work for clients who need store-ready iOS and Android builds, not just a polished prototype. These are the patterns that held up in production, and the ones that did not. This is not a framework ranking. It is what we saw once real users, real releases, and real teammates entered the picture. Flutter makes it easy to defer architectural decisions. Widgets compose quickly. Hot reload hides how tangled things are becoming. Async work, platform channels, and auth flows often land after the first sprint demo. By the time pain shows up, state is spread across parent widgets, inherited notifiers, and ad-hoc service singletons. Refactoring feels risky because nobody is sure which screen owns which piece of data. These showed up before anyone said "we picked the wrong library": Screens that were fast to build but painful to change Duplicate API calls after navigation pop/push cycles Bug fixes that resurfaced in a different widget tree branch QA reports that only reproduced on one platform build None of that is unique to Flutter. It is what happens when UI state, domain state, and API-driven data get mixed without clear boundaries. For our client apps, production scale was not millions of users on day one. It usually meant: More features shipping after the first store release More developers touching the same modules More edge cases around slow networks, stale tokens, and partial offline behavior Post-MVP iteration on a codebase that still had to pass App Store and Google Play review That is when state management stops being a tutorial topic and starts being a delivery constraint. These lessons came from shipping and maintaining Flutter projects, not from comparing packages in isolation. Your stack may differ. The trade-offs probably will not. Local state still makes sense for isolated UI: toggles, form field focus, animation controllers, short-lived modal flows. We still use it in those cases. It became a problem when business logic crept into StatefulWidget classes. Fetching data, handling errors, and coordinating navigation from one screen's setState block made that screen the hidden owner of behavior other features needed later. We also paid for it in testing. Widgets that mixed layout, side effects, and API calls were harder to exercise on both iOS and Android CI builds. Splitting view logic from data flow, even in small steps, made regressions easier to catch. Rule of thumb we use now: if another screen might need this data within two sprints, local setState is probably too local. Early in MVP delivery, Provider was often enough. The team could move quickly, dependencies were familiar, and the learning curve stayed low. That matters when you are trying to reach a first release on a fixed timeline. As features accumulated, we leaned more on Riverpod or Bloc in modules where async boundaries and testability mattered most. Riverpod's explicit providers and overrides helped us reason about dependencies in larger apps. Bloc's event/state separation made complex flows (auth refresh, paginated lists, multi-step forms) easier to trace in code review. We did not migrate everything at once. Mixed patterns are fine if they are intentional: one primary approach per feature folder, documented in a short README or ADR note. A pattern we reuse for list screens looks like this (Riverpod example): final ordersProvider = FutureProvider.autoDispose<List<Order>>((ref) async { final repo = ref.watch(orderRepositoryProvider); return repo.fetchOrders(); }); The point is not the syntax. It is that loading, success, and failure have a predictable home instead of living inside a widget's initState. See the Riverpod documentation and Bloc library docs when you want deeper references. We treat them as tools, not identity. It is tempting to put "the app state" in one global store and call it done. That worked until features had different lifecycles, permissions, and refresh rules. What helped us more was scoping state by feature and separating layers: UI state: expanded panels, selected tabs, scroll position Domain state: cart contents, draft form values, in-progress job status Remote data: API responses cached with clear invalidation rules A repository layer became the stable seam for backend integration. Widgets and notifiers depended on repositories, not raw HTTP clients scattered through the tree. When an endpoint changed, we fixed one place instead of five screens. Global s
We built an app for Japan's neighborhood associations — and learned that invisible work is the hardest problem
niixolabs
The problem Japanese neighborhood associations — jichikai or chonaikai — run almost entirely on volunteer labor. Someone collects dues house by house. Someone else delivers the bulletin board. Another person organizes the safety drill, coordinates the annual meeting, and writes the handover notes for whoever takes over next year. None of that work gets logged anywhere. It's invisible. So when officer recruitment comes around, no one wants to step up — not because the work is impossible, but because no one knows how much of it there actually is, and the person who did it last year is already tired. The same people cycle through exhaustion. The same conversation happens every year. Musubiba makes every officer's contribution measurable. Bulletin circulation, dues collection, safety check-ins, meeting votes, annual scheduling, and handover documentation — all tracked, all visible, all handed off cleanly when roles rotate. The goal isn't automation. It's making the workload legible so that it can be shared more fairly, and so that new officers aren't starting from zero every cycle. The handover notes feature matters more than you'd expect: a successor who inherits a full activity record behaves differently than one starting from a blank slate. Flutter for iOS and Android — neighborhood associations span every device type, and a single Dart codebase was the only realistic path. Backend is Firebase; Firestore's real-time listeners handle safety check-ins and live vote tallies. Billing runs on both Stripe and in-app purchases to cover the web-based accounting input path, because some committee leads are more comfortable with a browser than a smartphone. New members join by scanning a QR code — no invite emails to manage. This is optimized specifically for Japan's jichikai system. The workflows — how bulletins circulate, how dues are collected, how officer roles are defined — are Japan-specific enough that it won't map well to HOAs in other countries. We chose depth over generality. Pricing: free up to 15 members; ¥1,500/month for unlimited. App Store: https://apps.apple.com/jp/app/musubiba/id6759871374 Google Play: https://play.google.com/store/apps/details?id=com.htor.musubiba
Reviving Daphq: How I Built an Open-Source, Bare-Metal File Transfer Engine Solo with GitHub Copilot
Omar Afifi
This is a submission for the GitHub Finish-Up-A-Thon Challenge Daphq is a robust, open-source, cross-platform file transfer application engineered entirely from scratch to deliver hardware-saturating speeds over local area networks (LAN), Wi-Fi, and Mobile Hotspots. As a solo developer, I built Daphq to solve a personal frustration: the bloated overhead, privacy concerns, and artificial speed limits of conventional HTTP-based or cloud-reliant file-sharing tools. Daphq bypasses the standard Web/REST layer completely, establishing direct, bare-metal TCP Sockets (Socket & ServerSocket) with SocketOption.tcpNoDelay enabled to eliminate protocol latency and push network hardware to its absolute physical limits. Built using Flutter (Dart) for seamless cross-platform performance (currently native on Android and Windows), Daphq features a highly decoupled architecture using the BLoC/Cubit pattern, multi-gigabyte memory protection guards, and background network synchronization, and intelligent user guidance. The entire project is completely open-source and free to review, fork, or run locally: 🌐 Official Product Website: omarafifi-cse.github.io/daphq/ 💻 GitHub Repository: github.com/omarafifi-cse/daphq Screenshots in Action Android UI Layout Windows Desktop Experience Clean, robust mobile layout with active background service tracking. Fluid, modern, and highly responsive desktop experience. Daphq was born under high pressure, but after shipping the bare bones of version v1.0.0, it was essentially abandoned in my local repository directory. The project had immense raw speed potential, but it was plagued by architectural gaps, clunky user workflows, and high-stress bugs that made it unviable for everyday users. The GitHub Finish-Up-A-Thon Challenge was the exact catalyst I needed to dust off the codebase and transform it from a fragile command-like utility into a highly polished, resilient consumer application (v2.2.0). Here is exactly how the architecture and UX matured over the course of this challenge: Discovery & Connectivity: Before (v1.0.0): Zero automation. Users had to manually look up and type cryptic local IPv4 addresses. After (v2.2.0): A custom UDP Auto-Discovery Service that actively scans subnets and features an integrated watchdog mechanism to instantly heal connections during IP changes. User Interface & Fluidity: Before (v1.0.0): Rigid layouts and main-thread hangs (UI freezing) when selecting massive directories. After (v2.2.0): A unified dashboard anchored by a premium "Orbital Radar", coupled with Non-Blocking Asynchronous UI. Directory resolution is now fully offloaded from the main thread, accompanied by a persistent Transfer History system. Smart User Guidance: Before (v1.0.0): Users often suffered from slow transfers due to ISP router bottlenecks without knowing why. After (v2.2.0): Integrated a real-time speed monitor that triggers a Smart Hotspot Guide if speeds drop below 2.0 MB/s, guiding users to utilize 5GHz direct hotspots for up to 10x faster speeds. Memory Safety & Disk I/O Flow Control: Before (v1.0.0): High risk of Out-Of-Memory (OOM) crashes when streaming multi-gigabyte files due to unthrottled asynchronous disk reads. After (v2.2.0): Implemented zero-copy byte slicing (Uint8List.sublistView) and Natural Socket Backpressure (await socket.flush()). Daphq now self-throttles to match real-time network speeds, saving physical RAM. System-Wide Integrations: Before (v1.0.0): Isolated sandboxed app. After (v2.2.0): Deployed deep OS hooks, including native Android Share Menu entry, background execution via Android Foreground Services, and a Windows Context Menu Shell Extension. As a solo developer, you are the software architect, the UI designer, the QA technician, and the DevOps engineer all at once. Time is your greatest bottleneck. Throughout this sprint, GitHub Copilot didn’t just autocomplete lines of boilerplate—it acted as an incredibly knowledgeable senior engineering peer, unlocking complex architectural problems. Here are three distinct breakthroughs where GitHub Copilot completely changed the trajectory of the project: I wanted the home dashboard to feel alive with an evenly distributed, deterministic "Orbital Radar" circle showing available peer devices. Distributing dynamic widgets symmetrically on a circular plane without them overlapping can quickly become a headache. Copilot's Intervention: By providing Copilot with my layout boundaries and device state arrays, it instantly mapped out the exact trigonometric distribution math using cos and sin over a mapped index. Furthermore, it proactively recommended assigning unique ValueKeys to the dynamically generated widgets, preventing unnecessary re-paints and maximizing rendering performance on low-end hardware. A critical, highly frustrating platform bug on Windows caused Daphq to accidentally trigger background execution loops whenever a user performed completely unrelated right-c
I built a voice CBT diary with offline AI — here's how it works
Pavel Trubetskov
Two years ago I was going through CBT therapy for anxiety and depression. Voice was the obvious fix. On-device AI was the missing piece. Mentalium is a voice CBT diary with offline AI transcription. Press record, Flutter + Dart for the UI and app logic. One codebase for iOS and Android, Whisper.cpp for transcription. The ggml-small-q5_1 model (~180 MB) On iOS: compiled against Metal GPU via a Swift bridge. CoreML wasn't flexible enough for the quantized model weights I needed. On Android: JNI bridge to the native C++ library. Getting this to compile cleanly for arm64-v8a and x86_64 took a while. SQLite (via sqflite) for local storage. Every diary entry stays on-device — AES-256-GCM encryption applies only when the user emails an Excel report Model size vs. accuracy tradeoff. The tiny Whisper model is fast but misses First launch UX. Downloading 180 MB on first open is a bad experience Language detection. The app supports 7 languages. Whisper handles multilingual Building for mental health adds constraints most apps don't have. Privacy The CBT methodology also drove some unusual UX decisions. The five-step iOS is live on the App Store with a 7-day free trial. → mentalium.me App Store Happy to answer questions about the Whisper.cpp integration, the Flutter architecture, or the CBT-specific UX decisions.
freeCodeCamp
15 条教程、指南与实践文章
Advanced Error Handling in Dart: Records, Result Types, Monads, and Freezed Exceptions
Oluwaseyi Fatunmole
Every Dart developer has written this at some point: try { final user = await repository.getUser(id); // do something with user } catch (e) { // what is e? who knows. print(e.toString()); } I
How to Use Dart Cloud Functions and the Firebase Admin SDK: A Handbook for Developers
Atuoha Anthony
There is a specific kind of friction that every Flutter developer who has tried to write a backend has felt. You spend your days writing expressive, null-safe, strongly typed Dart code on the frontend
How to Build Production-Ready AI Features with Flutter [Full Handbook for Devs]
Atuoha Anthony
You've probably seen the demos. A Flutter app, a text field, and a few lines calling the Gemini API – and out comes something that feels like magic. The audience applauds. Your product manager is alre
Learn Command Line Interface (CLI) Development with Dart: From Zero to a Fully Published Developer Tool
Oluwaseyi Fatunmole
Most developers spend a significant portion of their day in the terminal. They run flutter build, push with git, manage packages with dart pub, and orchestrate pipelines from the command line. Every o
How to Use Mixins in Flutter [Full Handbook]
Atuoha Anthony
There's a moment in every Flutter developer's journey where the inheritance model starts to crack. You have a StatefulWidget for a screen that plays animations. You write the animation logic carefully
How to Use GraphQL in Flutter: A Handbook for Developers
Atuoha Anthony
There's a moment that most Flutter developers experience at some point in their careers. You're building a screen that needs a user's name, their latest five posts, and the like count on each post. Se
How to Build AI-Powered Flutter Applications with Genkit Dart – Full Handbook for Devs
Atuoha Anthony
There's a particular kind of frustration that every mobile developer has felt at some point. You're building a Flutter application, and you want to add an AI feature. Perhaps it's something that reads
Efficient State Management in Flutter Using IndexedStack
Atuoha Anthony
When you're building Flutter applications that have multiple tabs or screens, one of the most common challenges you'll face is maintaining state across navigation without breaking the user experience.
How to Build a Complete Flutter CI/CD Pipeline with Codemagic: From PR Quality Gates to Automated Store Releases
Oluwaseyi Fatunmole
If you've spent any time shipping Flutter apps manually, you already know the drill. Someone on the team finishes a feature, builds the APK locally, signs it (hopefully with the right keystore), uploa
How to Build a Production-Ready Flutter CI/CD Pipeline with GitHub Actions: Quality Gates, Environments, and Store Deployment
Oluwaseyi Fatunmole
Mobile application development has evolved over the years. The processes, structure, and syntax we use has changed, as well as the quality and flexibility of the apps we build. One of the major improv
Learn How AI Agents Are Changing Software Development by Building a Flutter App Using Antigravity and Stitch
Atuoha Anthony
Software development has always evolved alongside the tools we build. There was a time when developers wrote everything in assembly language. Then higher-level languages arrived and made it possible t
How to Use Monorepos in Flutter
Atuoha Anthony
As Flutter applications grow beyond a single mobile app, teams quickly encounter a new class of problems. Shared business logic begins to be copied across projects. UI components drift out of sync. Fixes in one app don’t propagate cleanly to others. ...
How to Add Multi-Language Support in Flutter: Manual and AI-Automated Translations for Flutter Apps
Atuoha Anthony
As Flutter applications scale beyond a single market, language support becomes a critical requirement. A well-designed app should feel natural to users regardless of their locale, automatically adapting to their language preferences while still givin...
How the Factory and Abstract Factory Design Patterns Work in Flutter
Oluwaseyi Fatunmole
In software development, particularly object-oriented programming and design, object creation is a common task. And how you manage this process can impact your app's flexibility, scalability, and maintainability. Creational design patterns govern how...
How to Use the Singleton Design Pattern in Flutter: Lazy, Eager, and Factory Variations
Oluwaseyi Fatunmole
In software engineering, sometimes you need only one instance of a class across your entire application. Creating multiple instances in such cases can lead to inconsistent behavior, wasted memory, or resource conflicts. The Singleton Design Pattern i...
Hacker News
20 条技术社区讨论与项目链接
What's New in Flutter 3.44
divan
Article URL: https://blog.flutter.dev/whats-new-in-flutter-3-44-b0cc1ad3c527 Comments URL: https://news.ycombinator.com/item?id=48233274 Points: 2 # Comments: 0
Convert between 30 color formats in one tool (HEX, RGB, Tailwind, Flutter, etc)
hkdb
Article URL: https://colorcx.com/ Comments URL: https://news.ycombinator.com/item?id=48230724 Points: 2 # Comments: 0
A Firebase Mistake Led to a €3,167 AI Bill Overnight in My Flutter App
serial_dev
Article URL: https://ulusoyca.medium.com/how-a-two-year-old-firebase-mistake-led-to-a-3-167-ai-bill-overnight-89adfab1dad3 Comments URL: https://news.ycombinator.com/item?id=48120294 Points: 3 # Comments: 1
Show HN: Mathfinity – Mental arithmetic drills against the clock (Flutter)
heliskyr2
Article URL: https://github.com/p32929/mathfinity Comments URL: https://news.ycombinator.com/item?id=48020681 Points: 1 # Comments: 0
Riches List: Flutter App for Smart Expense Management
freakypoison
Riches List — a modern Flutter-based expense management app designed to simplify how users track spending, manage transactions, shop smarter, and make seamless digital payments. I’m currently looking for support, contributions, and collaboration to help improve the project further. If you’re interested in mobile development, Flutter, UI improvements, feature ideas, or open-source collaboration, your contribution would be highly appreciated. https://github.com/shubham-gaur/riches-list Comments URL: https://news.ycombinator.com/item?id=47776650 Points: 2 # Comments: 0
Popular Flutter GetX repo disappeared briefly
nativeforks
Article URL: https://github.com/jonataslaw/getx Comments URL: https://news.ycombinator.com/item?id=47775020 Points: 1 # Comments: 0
Show HN: Lustre – MCP server giving AI tools premium Flutter components
deltaops
Article URL: https://www.npmjs.com/package/lustre-mcp Comments URL: https://news.ycombinator.com/item?id=47631865 Points: 1 # Comments: 0
What's New in Flutter 3.41
doctaj
Article URL: https://blog.flutter.dev/whats-new-in-flutter-3-41-302ec140e632 Comments URL: https://news.ycombinator.com/item?id=47580930 Points: 2 # Comments: 0
Show HN: Flutterby, an App for Flutter Developers
DavidCanHelp
Article URL: https://flutterby.app/ Comments URL: https://news.ycombinator.com/item?id=47391966 Points: 6 # Comments: 1
Google Announces Genkit (Gen AI Library) for Dart and Flutter
pavelgj
Article URL: https://blog.dart.dev/announcing-genkit-dart-build-full-stack-ai-apps-with-dart-and-flutter-2a5c90a27aab Comments URL: https://news.ycombinator.com/item?id=47335067 Points: 3 # Comments: 0
Show HN: Can we have Flutter-like portability without the bloated web binaries?
io_eric
I’ve been spending the last few months building Coi, a type-safe language that compiles to WebAssembly. The initial goal was just a fast, reactive web language, but as I refine the core, I’ve started mapping out how to take this multi-platform, mobile, desktop, and server, without falling into the traps that other frameworks have. The plan is to use C++ as the intermediate layer. For desktop and mobile, I want to use Skia combined with a layout library to translate HTML/CSS sizing and transformations into something Skia can draw. This ensures the UI stays pixel-perfect across platforms. However, the "Flutter approach" to the web has always bothered me. Shipping a 2MB+ Skia binary just to render a basic landing page feels redundant when the browser already has a world-class rendering engine. It results in massive bundles and a canvas-only UI that breaks basic browser expectations like SEO, text selection, and accessibility. With Coi, I want to split the strategy: on the web, it stays lean by using the browser’s native HTML/CSS and JS glue. On native platforms, it uses the C++/Skia stack. You get the same codebase and the same visual output, but the web build doesn't suffer from "canvas bloat". Right now, I’m still focused on the web target and refining the core language specs, but the server target is next on the roadmap. I'm curious if this "hybrid rendering" approach, native elements for web, Skia for desktop/mobile, is something others have found success with, or if I'm underestimating the difficulty of keeping the layout engines perfectly synced. I'd love some feedback on the language design or the architectural plan. https://github.com/coi Comments URL: https://news.ycombinator.com/item?id=47191782 Points: 1 # Comments: 4
Show HN: I rebuilt my 13-year-old budgeting app from scratch in Flutter
sfluecki-dev
I built BUDGT in 2013 as a broke student who needed one answer: "how much can I spend today without going broke this month?" It divides your monthly budget into a daily allowance — one number, updated in real time as you log expenses. 13 years and thousands of users later, I rebuilt the whole thing from scratch. The original Objective-C app couldn't support what users were asking for (analytics, category budgets), so I moved to Flutter and rewrote every screen. What's different: - Full redesign with a modern UI - Analytics: spending pace, month-over-month, day-of-week patterns, top expenses - Category targets: set limits per category, not just an overall budget - Category drill-down: see exactly where money goes within each category What hasn't changed: - 100% offline. No account, no cloud, no bank connection, no tracking. - All data stays on the device. I literally cannot see your data. - Same daily budget concept — one number, color-coded feedback. The hardest part was migrating existing users' Core Data (SQLite) to the new Drift database without losing any records. Existing users get the update automatically and see a migration flow that moves their entire history. Happy to discuss the technical side (Flutter architecture, Core Data migration, App Store continuity with a full rewrite) or the product side. iOS only: https://apps.apple.com/app/id580812126 Comments URL: https://news.ycombinator.com/item?id=47119396 Points: 2 # Comments: 0
Show HN: A stream-based Flutter audio module with CarPlay/Android Auto
paweljanda
Hi! We open-sourced mt_audio, a stream-based audio module for Flutter that wraps just_audio + audio_service behind a single facade. We built this because in multiple production apps (podcast/radio/audiobook-like flows) we kept re-implementing the same glue: background playback, notifications, queue handling, stream/state wiring, and integration edge cases. The goal is a small dependency that gives a consistent API and reduces app-level complexity (no required external state management). Key features: background playback + system notifications queue management (playlist-first workflows) Android Auto & Apple CarPlay support behind the same facade example app + ready UI widgets (Now Playing / controls) Feedback welcome — especially on API shape, missing edge cases, and docs/examples. Comments URL: https://news.ycombinator.com/item?id=47118611 Points: 2 # Comments: 1
Show HN: Create an onboarding flow on Flutter in 5 min
jordanbonnet
Hey Flutter devs If you've shipped apps before, you know how important it is to have an efficient and polished onboarding flow. It's the first thing users see and often the reason they leave. You've probably first focused on the core of your app, what makes it different. And now, you want to push it to the store, but you know you have to build an onboarding flow... and it's a little painful. Onboarding flows are deceptive. They are super easy to build technically, but very difficult to perfect in terms of conversions. Should I ask questions or show features? Should I add more steps? Less steps? Should I prompt to give a rating? Should I force users to sign-in? That's why iteration is key. And with coding agents, it's never been easier to test different things. But your agent only builds what you ask for. And when it comes to onboarding, most devs don't know which details actually matter. The right spacing, the subtle animations, the micro-interactions that make users stay. You'll burn through tokens and still end up with something that feels off. The new version of fluo.dev lets you build beautiful onboarding flows for Flutter right from your favorite coding agent. It gives structure, like rails to follow. You don't rebuild standard steps from scratch. You don't waste tokens on boilerplate. You get built-in templates with all the details baked in. No drag-and-drop. No config files. Just prompt and ship. No email. No account. No credit card. 100% free. 100% open source. And if you need beautiful authentication flows (email + otp, mobile + otp, google, apple), it's included and also 100% free. Would love to know your thoughts :) Comments URL: https://news.ycombinator.com/item?id=47071660 Points: 2 # Comments: 0
Show HN: Oore CI – self-hosted, Flutter-first mobile CI (public alpha)
_arykumarjha
Built Oore CI to run mobile CI + internal app distribution on your own infrastructure. Public alpha is live. It’s early, and I’m looking for practical feedback from people who actually try it. Start here: - Install guide: https://docs.oore.build/getting-started/install - Alpha onboarding: https://docs.oore.build/getting-started/public-alpha - Known limitations: https://docs.oore.build/getting-started/known-limitations - Live demo: https://demo.oore.build - Repo: https://github.com/devaryakjha/oore.build Install command (from the guide): curl -fsSL https://oore.build/install | bash If you try it and something feels rough or unclear, I’d really appreciate a quick issue: https://github.com/devaryakjha/oore.build/issues/new/choose Comments URL: https://news.ycombinator.com/item?id=47059909 Points: 8 # Comments: 0
Show HN: Unflutter – a static analyzer for Flutter/Dart AOT
kugutsumen
Article URL: https://github.com/zboralski/unflutter Comments URL: https://news.ycombinator.com/item?id=47035788 Points: 1 # Comments: 0
Show HN: FluxDown – Free download manager built with Rust and Flutter
zero-lab
Article URL: https://fluxdown.zerx.dev Comments URL: https://news.ycombinator.com/item?id=47032136 Points: 1 # Comments: 0
Show HN: Flutter-Skill – AI E2E Testing for 8 Platforms via MCP (Open Source)
charlie-w
Article URL: https://github.com/ai-dashboad/flutter-skill Comments URL: https://news.ycombinator.com/item?id=47014805 Points: 1 # Comments: 0
Fluorite – A console-grade game engine fully integrated with Flutter
bsimpson
https://fosdem.org/2026/schedule/event/7ZJJWW-fluorite-game-... Comments URL: https://news.ycombinator.com/item?id=46976911 Points: 536 # Comments: 304
Show HN: Chroma Master A premium Flutter color suite with 7 integrated games
Krishna_Avatar
Play Store: https://play.google.com/store/apps/details?id=com.chromamast... Hi HN, I’ve always found standard color utilities to be a bit dry. Most focus on just providing HEX codes, but as a developer, I wanted to build something that felt alive—a creative playground that helps you "master" color theory through gameplay. I built Chroma Master - Color Tool. It’s a suite that combines professional color tools with a full "Game Hub" (Arcade). ### The Technical Challenge The biggest hurdle was performance. I wanted a "Glassmorphism" look with real-time animated mesh backgrounds that wouldn't drain the battery or lag on mid-range Android devices. - UI Logic: Built entirely in Flutter, utilizing heavy optimization for the custom mesh animation loops and OLED-ready true blacks. - AI Integration: Implemented a real-time camera segmentation picker that extracts palettes directly from the physical environment. - Color Mixing Engine: I had to re-implement digital pigment blending from scratch to make the "Merge Puzzle" feel physically accurate. ### The Arcade (7+ Games) To keep the experience engaging, I integrated games that teach color relationships: - Hue Rush: A high-speed coordination game testing your ability to switch color shields in rhythm. - Merge Puzzle: A rethink of the 2048-style logic using additive/subtractive color blending. - Memory Match: A high-fidelity memory trainer that uses hue variations to challenge your visual perception. - Gradient Build: Playing with easing functions and lerping to create perfect smooth transitions. I’m really interested in hearing from the HN community regarding the balancing of the game difficulty and the performance of the Flutter-based animations on your specific hardware. Comments URL: https://news.ycombinator.com/item?id=46973157 Points: 1 # Comments: 0
Medium
10 条Flutter 相关文章精选
Flutter: Implementasi HTTP & REST API pada Aplikasi Movie DB
Zahra Nibras Hanilatifa
Perkembangan aplikasi mobile membuat kebutuhan akan informasi yang cepat dan realtime semakin meningkat. Saat ini, banyak aplikasi… Continue reading on Medium »
BankLab — Um laboratório Open Source para engenharia de sistemas financeiros
Rudson Ribeiro Alves
BankLab é um laboratório open source para estudar e praticar engenharia aplicada a sistemas financeiros, unindo backend em Go, app mobile… Continue reading on Medium »
Anthropic Just Closed a $65B Series H at a $965B Valuation — Top 10 AI & Flutter News May 29, 2026
Blur Brah Lab
Claude / Anthropic Continue reading on Medium »
The Live Demo Trap That Forced Me to Master Flutter Web Routing
Muhammadomar
Picture this. You’re in a high-stakes technical interview, sharing your screen, demoing a production-ready application you built. Continue reading on Medium »
Flutter App Development: The Complete Guide to Building Cross-Platform Apps in 2026
synnefo academy
Everything you need to know about Flutter-and why Kerala is the best place to learn it Continue reading on Medium »
The Flutter BuildContext Warning I Ignored Until It Caused a Real Bug
Ali Wajdan
Using Flutter’s BuildContext after an await is a warning for a reason. Here’s the navigation crash it caused and the mounted check pattern… Continue reading on Medium »
Profiling Flutter Apps, Part 1: A Practical Workflow
Sandro Tola
Start with the right setup Continue reading on OverApp »
Genesis AI SDK — A Universal Flutter SDK for AI Agents
Devansh Verma
Genesis AI SDK provides one unified API for Gemini, OpenAI, Anthropic, HuggingFace, Ollama, on-device Gemma, and GGUF models — with tool… Continue reading on Medium »
COULD you help me with something : I have my trust.
Jina
Continue reading on Medium »
Getting Selected in Google Summer of Code ‘26
Santam
Getting selected for Google Summer of Code (GSoC) was one of the biggest goals on my bucket list. Continue reading on Medium »
社区日榜讨论与资源