本站已进行升级,老用户可以通过找回密码登录。

24h Intel · 84 條

Flutter 24小時情報 GitHub 熱門倉庫與技術資訊

每日彙總 Flutter / Dart GitHub 熱門倉庫,以及 Dev.to、freeCodeCamp、Hacker News、Medium、Reddit 的近期技術資訊,追蹤 24 小時 Stars 增量與社群討論。

更新於 09/19 下午06:516 個來源

GitHub

20 條

Dart 與 Flutter 相關倉庫熱度

Dev.to

12 條

開發者文章與專案分享

Shipping a multilingual Flutter AI therapist: Gemini first, Claude as fallback
09/19 上午05:14

Shipping a multilingual Flutter AI therapist: Gemini first, Claude as fallback

Timofei Gats

I shipped Safe Space, a Flutter app for everyday mental-health self-help: AI chat, a mood journal, CBT-style thought records, PHQ-9 / GAD-7 screens, and breathing tools. It is not therapy, not a medical device, and not a crisis line. That disclaimer lives in the UI, the backend, and the public site. This is a build log, not a ranking of other apps. Client: Flutter (Android + web today; iOS is still Coming soon) Auth: Firebase Authentication AI: Google Gemini on the backend, with Anthropic Claude as a fallback if Gemini is unavailable Languages: English, Russian, Turkish, Spanish, German, Portuguese, Japanese, Korean The interesting part is not "we wrapped a chatbot." It is how you keep the product honest when the model is in the loop. Users see a consent step before any message is sent to an LLM. If they skip it, there is no silent call. That is boring product work, and it is the work that matters in this category. The backend tries Gemini first. If that path fails, it can fall back to Claude. The user still sees a conversation, not a spinner forever. Keep timeouts short and surface a plain error if both providers are down. PHQ-9 and GAD-7 are well-known questionnaires. In the app they are screens with sources and plain-language ranges, not a clinical verdict. Item 9 on PHQ-9 (self-harm) must be treated as a crisis signal: point people to local emergency services, never to "keep chatting." Flutter's localization plus store listings (Play + RuStore + Amazon) beat maintaining eight native clients. The marketing site mirrors those locales on safespaceapp.cc. and assistants If you want Gemini / ChatGPT / Perplexity to mention the app when someone asks for a Wysa-class self-help companion, publish facts they can retrieve: robots.txt that allows OAI-SearchBot, Google-Extended, Bingbot /llms.txt and /llms-full.txt with product facts and the wellness disclaimer JSON-LD on the citeable overview: safespaceapp.cc/ai-therapist-app What I would not do again Do not invent an App Store ID. Do not copy fake ratings. Do not position an AI companion as a licensed clinician. Users in crisis need a hotline, not a model. If you want to try the free tier (web, no install): app.safespaceapp.cc. Android: com.safespace.safe_space_app on Google Play.

aibuildinpublicfluttermentalhealth
Google Indexed the Blog and Nothing Else on My Flutter Web Site
09/18 下午09:47

Google Indexed the Blog and Nothing Else on My Flutter Web Site

K M Shahriar Hossain

On 10 September, Search Console's verdict on this site was 18 pages indexed and The breakdown was stranger than the count. Of the 23 pages that had ever /apps, "Discovered — currently not indexed" usually gets blamed on crawl budget or a The site is Flutter web with the CanvasKit renderer, which paints everything, <canvas>. To a crawler, a canvas full of words is an The usual answer is to ship the words separately. A build step tool/prerender.py here) writes a real HTML file for every route, with the <div id="prerendered-content"> <h1>Apps</h1> <p>…</p> <a href="/apps/helm">Helm</a> … </div> It's clipped to one pixel rather than hidden with display: none, so it stays curl any curl can't see Google doesn't index the HTML the server sends. It runs the page's JavaScript main.dart.js And index.html had this, written alongside the prerendering: window.addEventListener('flutter-first-frame', function () { // ...fade out the loading screen... var seo = document.getElementById('prerendered-content'); if (seo) { seo.remove(); } }); A comment in the stylesheet explained why: the crawler copy goes "the moment Every route except blog posts. Posts carry a second copy: when a post opens, <article>. The handler It also explains "Discovered". Google had found the other pages through the The handler isn't wrong in general; the loading screen should go. The copy just getElementById finds nothing to remove: // In main(), before runApp. final el = web.document.querySelector('#prerendered-content'); if (el != null) { el.id = 'seo-prerendered'; // the first-frame handler now misses it el.setAttribute('style', clipped); // the clipping CSS was keyed on the old id el.setAttribute('aria-hidden', 'true'); } Three details matter: Re-apply the clipping inline. The stylesheet rule that hid the block was keyed on the old id. Rename it without this and the whole crawler copy appears on screen. Hide it from screen readers. The app turns on Flutter's semantics tree, which is the accessible version of the page. With both exposed, a screen reader would read every page twice. Drop it on navigation. The block describes the route that was served. When the visitor moves to another route inside the app, it's removed, so the document never carries text for a page that isn't showing. It's the same content the app paints, so this isn't a different page for Search Console's live test afterwards returned "URL is available to Google", /apps had 159 words and 96 links instead of none. Then indexing was requested for eight pages: the home page, the six hubs /apps, /tools, /blog, /games, /work, /packages) and one app page. By 14 September: 99 indexed, up from 18. It isn't a controlled experiment, If you ship Flutter web with prerendered HTML, curl is not the test that Search Console → URL Inspection → Test live URL → View tested page → HTML. That's the DOM Google indexes. Search it for a sentence from your page. Or open the page, wait for it to paint, and run document.body.innerText.length in the console. If it's near zero on a page full of text, a crawler sees the same nothing. Search index.html for anything that removes elements on flutter-first-frame, and ask what exactly it removes. The served HTML was right the whole time. The page deleted it before the one Originally published at devshakib.jumyn.com. I write about Flutter, Dart and the parts of shipping that are genuinely awkward — and publish the packages that came out of them at pub.dev/publishers/jumyn.com.

flutterwebdevseodart
Playing YouTube in Flutter: the case for a WebView fallback
09/18 下午09:26

Playing YouTube in Flutter: the case for a WebView fallback

Leonard Matasel

Every Flutter app that plays YouTube picks one of two strategies, and both break. Direct extraction resolves the stream URLs and hands them to video_player. You get native playback, real quality switching and a UI you control. You also get a dependency on an interface nobody promised you: when YouTube changes something upstream, extraction returns nothing and your users get a black screen. A WebView is the strategy that doesn't break, because it's the player YouTube itself maintains. You pay for it: the chrome isn't yours, quality selection isn't yours, and integrating it with the rest of your UI is work. The useful answer is not to choose. Try extraction, and when it fails, fall back to the WebView for that video — not for the whole app, not permanently. Failure here isn't an exception you catch around the player widget. It's earlier: the extraction step returns no playable stream, or returns one that the platform refuses. The fallback belongs at the point where you still know which video you were resolving and haven't shown anything to the user yet. Deciding after the first black frame is too late — by then you're swapping a widget the user is already looking at. The fallback path is not feature-equivalent, and pretending otherwise is how you get bug reports. In a WebView you lose the native quality selector and your own control overlay. So the fallback needs to be a degraded-but-working path you have actually tested, not a branch you wrote once and never exercised. I wrapped all of it in a package, omni_video_player: YouTube with the automatic fallback described here, plus Vimeo, HLS with quality switching, network files and assets — one widget, one controller. OmniVideoPlayer( sourceConfiguration: VideoSourceConfiguration.youtube( videoUrl: Uri.parse('https://www.youtube.com/watch?v=...'), preferredQualities: [OmniVideoQuality.high720], ), ) Two limits worth knowing before you adopt it: YouTube quality selection works on Android only, because on iOS the API exposes a single muxed 360p stream and there is nothing to switch between; and WebM seeking is off on iOS, because WebKit stalls the decoder on a seek and can't recover. Android, iOS, Web. BSD-3. https://pub.dev/packages/omni_video_player

fluttermobileprogrammingsoftware
Flutter vs Native Android vs iOS: Which Mobile Development Path Should You Choose?
09/18 下午06:15

Flutter vs Native Android vs iOS: Which Mobile Development Path Should You Choose?

JustAcademy Official

Every mobile developer eventually hits this fork in the road. You have an app idea, a deadline that feels tighter than it should be, and three very different paths staring back at you. Do you build natively for Android with Kotlin, go native for iOS with Swift, or take the cross platform route with Flutter and write one codebase that runs almost everywhere. There is no universal right answer here, and honestly, anyone who tells you there is one probably hasn't shipped enough apps to know better. This decision shapes your entire development timeline, your hiring strategy, your maintenance overhead for years to come, and even how your users experience your product on their devices. Let's start with native development, because it's the oldest and most trusted approach for a reason. When you build with Kotlin for Android or Swift for iOS, you're working directly with the platform's own tools, APIs, and design language. This means your app feels exactly like it belongs on that device. Animations are buttery smooth, hardware access is instant, and you're never waiting for a bridge or abstraction layer to catch up with what the OS just released. Native apps also tend to get first access to new platform features. When Apple or Google roll out something new at their developer conferences, native developers can usually implement it within days, while cross platform frameworks sometimes take weeks or months to catch up through community plugins or official support. The tradeoff with native development is obvious though. You're essentially building two separate apps, maintaining two codebases, testing two separate builds, and often hiring or training two sets of specialists who each need deep platform knowledge. For startups watching their runway closely, that's a real cost, not just a technical inconvenience. Bug fixes need to happen twice. Feature parity between platforms becomes a constant coordination challenge. Even something as simple as changing a button color across your entire app now means touching two different codebases written in two different languages, each with its own quirks and conventions. Flutter entered this conversation and genuinely changed how people think about mobile development. Built by Google and powered by the Dart language, Flutter lets you write your UI once and deploy it to both Android and iOS, often with pixel level consistency between platforms. What makes it stand out isn't just the write once pitch though. Its widget based architecture and hot reload feature mean developers can see changes almost instantly, which speeds up iteration in a way that native development rarely matches. You tweak a padding value, save the file, and watch the change appear on your emulator within a second or two, without losing your app's current state. That kind of fast feedback loop compounds over the course of a project and genuinely changes how teams work day to day. Flutter also brings a level of design consistency that's hard to achieve when you're maintaining separate native codebases. Because you're rendering your own widgets rather than relying on each platform's native UI components, your app looks and behaves identically on both Android and iOS unless you specifically choose to diverge for platform specific conventions. For brands that care deeply about visual consistency across devices, this is a huge advantage. A lot of the reasoning behind why teams choose one path over another gets broken down really well in this detailed breakdown of the tradeoffs between these approaches, and it's worth a read if you want the deeper technical comparison rather than just the surface level pros and cons that most articles tend to repeat. That said, Flutter isn't magic, and it would be dishonest to pretend otherwise. There are still edge cases where you'll need platform specific code, especially for things like deep hardware integrations, certain background processes, complex camera or sensor work, or brand new OS features that haven't been wrapped into Flutter's plugin ecosystem yet. Performance is generally excellent for the vast majority of apps, but for extremely graphics heavy apps like high end games or apps doing heavy real time rendering, native still tends to have the edge because you're closer to the metal, without an additional rendering engine sitting between your code and the device's GPU. There's also a learning curve to consider. Dart isn't a language most developers already know coming in, unlike Swift or Kotlin, which share more syntactic DNA with languages developers are commonly already familiar with. It's not a steep curve by any means, most developers pick up enough Dart to be productive within a couple of weeks, but it's still a factor when you're planning timelines and estimating how quickly a new hire can start contributing meaningfully. So how do you actually decide between these three paths? Think about your team first. If you already have strong Kotlin and Swift developers and the

androidiosflutterproductivity
27 Google Play store images in 50 seconds: a free Windows app that captures your emulator and exports the whole listing
09/18 下午04:13

27 Google Play store images in 50 seconds: a free Windows app that captures your emulator and exports the whole listing

Toty Cartoon Cartoon

27 files. 50 seconds. That was the stopwatch on the last Google Play listing I made: icon, feature graphic, eight phone screenshots, eight 7-inch and eight 10-inch tablet screenshots, plus the 1024 icon for App Store Connect, all named and all passing the Play Console checks before they were written. By hand, the same set used to cost me an hour or two per app, and I skipped the tablet sets every time. So I built a small Windows app that does the whole thing from the project folder, and I'm sharing it here because the free part covers most of what a solo Android dev needs. Measured on a real app (a Flutter project, Android 35 emulator, 1080×2400): Step Wall clock Open the project folder → name, package, version, icon master and brand colours are read from pubspec.yaml, the manifest and colors.xml 3 s Auto-capture 3 more screens (5 were already in the kit) 26 s Export 27 files, each validated 21 s Total 50 s On a second app from a cold start it auto-captured 8 screens in 101 s, then exported 28 files in 22 s. After I "updated" the app and asked it to refresh every screenshot, it relaunched the app, replayed the same taps and replaced all 8 images in about 75 s — headlines, crops and props untouched. Most listing rejections I have seen are size and ratio problems, not content problems. The rules the exporter enforces: Asset Rule App icon 512 × 512, 32-bit PNG with alpha, under 1 MB Feature graphic 1024 × 500, 24-bit PNG or JPEG, no transparency Phone screenshots 2 to 8 images, 320–3840 px on each side, ratio between 16:9 and 9:16 — never over 2:1 7-inch tablet 1200 × 1920 (optional, but an empty tablet listing looks abandoned) 10-inch tablet 1600 × 2560 The trap: a modern phone or emulator captures at 1080 × 2400, which is 2.22:1. Upload that raw and the console refuses it. Every screenshot the app composes lands on a 9:16 canvas, and the standalone Resize tool inside it crops or pads a raw capture to 1080 × 1920 if that is all you need. The full spec with the edge cases is in my Google Play screenshot sizes guide. Open the project. Flutter or native Android with a Gradle app module. It picks the largest icon master it can find (the flutter_launcher_icons source beats a 192 px mipmap), lists every brand colour candidate, and pre-selects the style closest to your primary colour. Capture. The live view is the emulator: click to tap, drag to swipe, Back/Home/Recents underneath, F9 captures even while the emulator window has focus. Or press Auto-capture: it walks tabs and safe buttons with uiautomator dump + input tap, keeps only screens that look different (perceptual hash), never flips a switch, and stops at a permission prompt instead of answering it. Its taps are recorded, which is what makes the later "Recapture all" possible. Style. Ten screenshot styles, ten matching 1024 × 500 feature-graphic layouts, a hero and an accent prop per style you can drag, resize or hide. Headlines and subtitles fill in from an offline phrase library once you pick the app's category (English and Arabic, RTL handled); anything you edit is never overwritten. Export. Every file is checked against the table above before it is written. A failing file blocks the export with the reason, so nothing gets rejected on upload. Each export goes to its own store_assets/<date>_<time>/ folder inside the project. Project state lives in .storekit/ inside your repo with relative paths, so a clone on another machine keeps every screen and its words. A screenshot whose file went missing is shown with a Relink button, not silently dropped. Windows 10/11 only. Capturing needs adb and an emulator or a USB-debugging phone; you can also add PNGs you already have. Tablet sets reuse the phone captures in the phone frame unless you capture real tablet screens (there is a "Capture as 7-inch / 10-inch" mode). The export tells you when that happened. Auto-capture is beta. It gets tab bars and obvious buttons; it will not get past a login screen for you. The build is not code-signed yet, so SmartScreen shows "Windows protected your PC" on first run. More info → Run anyway. Nothing is installed; it is a 53 MB zip. Nothing is uploaded. Rendering is local. The only network calls are a one-time licence check with Gumroad and anonymous usage counts (style ids and counts, never project names, paths or your text). Everything up to the Export button is free: open, capture, style, preview at full size. Writing the export files needs a one-time licence — $4.99 during the launch offer until 13 October 2026, $19 after that, 30-day refund, no subscription. Download: Store Kit for Windows (the page has the measured numbers and the FAQ) Single files without installing anything: the Google Play icon resizer and the feature graphic resizer run in the browser, no upload. If you try it, the two things I want to hear about: which app categories need better default phrases, and which screens Auto-capture missed on your app.

androidfluttershowdevproductivity
Did you know you can swap two variables in Dart without using a temporary variable?
09/18 下午03:41

Did you know you can swap two variables in Dart without using a temporary variable?

Vrushali

🔄 Did you know you can swap two variables in Dart without using a temporary variable? In many programming languages, we usually need a third variable to swap two values. But Dart makes this really simple using multiple assignment: var a = 10; var b = 20; (a, b) = (b, a); print(a); // 20 print(b); // 10 ✨ What’s happening here? (b, a) creates the new values, and Dart assigns them back to (a, b) in the same statement. So: a = 10, b = 20 becomes: a = 20, b = 10 No extra temporary variable needed. 🚀 A small Dart feature, but a nice trick to know when writing clean and concise code. Dart #Flutter #Programming #CodingTips #LearnDart #SoftwareDevelopment

dartfluttercodingsoftwaredevelopment
I need to fix my deeplink issue
09/18 下午01:47

I need to fix my deeplink issue

Sathish Gnanavel

Hi everyone, I have an existing Flutter project where deep linking was working perfectly before. Recently, I upgraded my Flutter SDK, Android Studio, Android SDK, Gradle/AGP, etc. The project code and deep-link implementation were not intentionally changed. After the upgrade, I’m facing two issues: Debug build: Release build: I have already verified that Digital Asset Links / assetlinks.json is not the issue. The same deep-link implementation worked correctly before the environment upgrades. I suspect this may be related to Android activity/task configuration, such as launchMode, taskAffinity, intent flags, MainActivity, startup theme/window configuration, or changes in Flutter/AGP/Android behavior. Has anyone experienced this after upgrading Flutter/Android tooling? What configuration should I check or change to fix both the debug black-screen/crash and the release task-stack behavior?

androiddebuggingfluttermobile
Tired of Heavy 8GB Emulators? I Built a Lightweight Flutter & Web Simulator (Free Windows Dev Studio)
09/18 下午01:14

Tired of Heavy 8GB Emulators? I Built a Lightweight Flutter & Web Simulator (Free Windows Dev Studio)

PrinceNet

Every developer working with responsive web apps or Flutter knows the pain: you want to quickly test a UI layout or inspect an event, but starting Android Studio emulators or heavy simulators eats up 8GB+ RAM, makes the laptop fan spin like a jet engine, and takes minutes to boot. To solve this everyday frustration, I built Zakhades Studio (v1.1.0) — an ultra-lightweight, dedicated live simulator and developer studio for Windows. Unlike heavy virtualization, Zakhades Studio is focused on speed, responsiveness, and minimal resource usage. 📱 12+ Device Screen Presets: Effortlessly switch between iPhones, Android devices, tablets, and foldables with realistic touch gestures. ⚡ Zero Heavy VM Booting: Launches in seconds with almost zero CPU/RAM footprint compared to standard emulators. 🛠️ Real-Time Console & Network Audit: Catch API errors and view debug logs live while testing. 🤖 Integrated AI Bug Doctor: Instantly analyze layout glitches and get fix suggestions. 💻 Free for Developers: Made for the community to speed up UI development workflows. You can download the Windows installer completely free from our official site: Download Zakhades Studio (PrinceNet.in) Give it a spin on your next Flutter or Web project, and let me know your thoughts or what new features you'd like to see added!

flutterwebdevproductivitytooling
LEGO Architecture ใน Flutter วิธีจัดโค้ดให้ต่อได้เหมือนตัวต่อ
09/18 上午10:50

LEGO Architecture ใน Flutter วิธีจัดโค้ดให้ต่อได้เหมือนตัวต่อ

Nokka

LEGO Architecture ใน Flutter วิธีจัดโค้ดให้ต่อได้เหมือนตัวต่อ โดย Nokka (นก-กา) | 15 กันยายน 2026 บทความนี้เขียนโดย AI (โมเดล deepseek-v4.1-flash ของผู้ให้บริการ ollama-cloud) ผ่าน Hermes Agent จาก Nous Research ตรวจสอบและเรียบเรียงโดย Nokka เคยมีไฟล์ในโปรเจกต์ที่ทั้งทีมแอบกลัวที่จะเปิดไหมครับ มันดึงข้อมูล จัดรูปแบบ ตรวจสอบ และวาดหน้าจอ ทั้งหมดอยู่ใน build() เดียว และมันทำงานได้ จึงไม่มีใครอยากแตะ แต่พอต้องแก้ขั้นตอนชำระเงิน ต้องเลื่อนผ่านสามเรื่องที่ไม่เกี่ยวข้องกัน เพื่อหาเส้นเดียวที่ต้องแก้ [1] Atuoha Anthony เขียนคัมภีร์ฉบับเต็มความยาวหลายหมื่นตัวอักษรบน freeCodeCamp เมื่อวันที่ 11 กันยายน 2026 เพื่ออธิบายว่าทำไมเรื่องนี้ถึงเกิด และแก้อย่างไร [1] Atuoha เปิดด้วยภาพที่ทุกคนคุ้น คือการกดตัวต่อสองชิ้นเข้าด้วยกัน [1] "คุณกดตัวต่อลงบนอีกชิ้น รู้สึกถึงเสียงคลิก และมันยึดติด คุณคงไม่เคยคิดว่าตัวต่อถูกขึ้นรูปอย่างไร ใช้พลาสติกอะไร หรือมาจากโรงงานไหน คุณสนใจแค่เรื่องเดียวในตอนนั้น: ปุ่มมันตรงกันหรือเปล่า" นั่นคือทั้งหมดของแนวคิดนี้ [1] ตัวต่อมีสองส่วนที่ควรค่าแก่การสังเกต สิ่งที่ตัวต่อเป็น: รูปร่าง สี จุดประสงค์ ปุ่มของมัน: จุดเชื่อมต่อมาตรฐานที่ทำให้ต่อกับชิ้นอื่นได้ ในโค้ด ตัวต่อคือหน่วยของแอป ซึ่งอาจเป็น widget, class, service หรือทั้งฟีเจอร์ และปุ่มคือสัญญาที่ตัวต่อเปิดออกให้โลกภายนอก ซึ่งมักเป็น abstract class, interface หรือ signature ของฟังก์ชัน [1] "การต่อตัวต่อสองชิ้นในโค้ด หมายความว่าส่วนหนึ่งของแอปพึ่งพาอีกส่วนผ่านสัญญานั้นเท่านั้น ไม่ใช่เข้าไปหยิบใช้วิธีที่อีกส่วนสร้างไว้ข้างใน" Padding ที่คุณเขียนอยู่แล้ว ส่วนที่ผมชอบที่สุดของคัมภีร์นี้คือ มันเริ่มจากสิ่งที่คนอ่านทำอยู่แล้วทุกวัน [1] Padding( padding: const EdgeInsets.all(8), child: const Text('Hello'), ) Padding ทำแค่เรื่องเดียว และไม่สนใจเลยว่าคุณส่งอะไรมาเป็น child จะเป็น Text, Image, Column หรืออะไรก็ได้ [1] "Padding คือตัวต่อ และพารามิเตอร์ child ของมันคือปุ่ม เพราะ widget ใดก็ตามที่ผ่านประตูนั้นเข้าไปได้ ยินดีต้อนรับ คุณไม่เคยสอน Padding ว่าจะวาดข้อความหรือรูปอย่างไร และมันก็ไม่จำเป็นต้องรู้" แล้ว Atuoha ก็แสดงฝั่งตรงข้าม ด้วย widget เล็ก ๆ ที่ดูไม่ผิดอะไร [1] class PriceTag extends StatelessWidget { final double price; const PriceTag({super.key, required this.price}); @override Widget build(BuildContext context) { return Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(6), ), child: Text('\$${price.toStringAsFixed(2)}'), ); } } มันตัดสินใจสองเรื่องที่ไม่เกี่ยวกันพร้อมกันในคลาสเดียว คือหน้าตาของกล่อง กับตัวเนื้อหา [1] พอคุณอยากได้กล่องแบบเดียวกันรอบข้อความ "Sale" คุณติดทันที ต้องก็อป Container กับ decoration ไปไว้ใน widget ใหม่ หรือใช้ extends สร้างลำดับชั้นคลาสขึ้นมาใหม่แค่เพื่อใช้ styling หกบรรทัด [1] วิธีแก้คือสิ่งที่ Padding สาธิตให้ดูแล้ว ดึงกล่องออกมาเป็นของตัวเอง แล้วให้มันรับ child อะไรก็ได้ [1] class SurfaceCard extends StatelessWidget { final Widget child; const SurfaceCard({super.key, required this.child}); @override Widget build(BuildContext context) { return Container( padding: const EdgeInsets.all(8), decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(6), ), child: child, ); } } SurfaceCard รู้แค่เรื่องเดียว คือทำตัวเป็นกล่องมุมโค้งมีเงา และมันมีปุ่มเดียวคือ child ซึ่งรูปร่างเหมือนปุ่มของ Padding เป๊ะ [1] และนี่คือบททดสอบว่าตัวต่อสร้างดีจริงไหม "คุณใช้มันซ้ำในที่ใหม่ได้โดยไม่ต้องก็อปสักบรรทัดไหม ถ้าได้ ปุ่มของมันกำลังทำหน้าที่" การประกอบ widget ให้ใช้ซ้ำได้นั้นยังไม่พอ ต้องสลับพฤติกรรมได้ด้วย [1] Atuoha ยกตัวอย่างปุ่มเพิ่มสินค้าลงตะกร้า ที่ไม่ควรรู้ว่าข้างหลังเป็นการเรียก REST API เขียนลงเครื่อง หรือแค่พิมพ์ออกคอนโซล [1] abstract class CartWriter { Future<void> add(String productId); } abstract class CartWriter คือปุ่มของเรื่องนี้ มันประกาศความสามารถเดียว และไม่พูดอะไรเลยว่าทำงานอย่างไร [1] "คุณเขียนเทสต์ที่ส่ง InMemoryCartWriter เข้าไป แล้วยืนยันว่า cartWriter.items มีสินค้าที่ถูกต้องได้ โดยไม่ต้องมี mocking framework และไม่ต้องมี network stub" และนี่คือส่วนที่ Atuoha บอกว่าควรหยุดคิดสักครู่ เพราะมันคือผลตอบแทนจริงของการมีสัญญา [1] พอรับได้ว่าคลาสควรต่อกันผ่านสัญญา ตรรกะเดียวกันก็ใช้กับการจัดโฟลเดอร์ [1] ความผิดพลาดที่พบบ่อยคือจัดตามชนิด โฟลเดอร์ screens, widgets, services วางเรียงข้างกัน ดูเรียบร้อย แต่มันตรงข้ามกับแนวคิดนี้ [1] "การจะเข้าใจหรือแก้ฟีเจอร์ตะกร้า คุณต้องกระโดดไปมาระหว่างสามโฟลเดอร์ที่ไม่เกี่ยวข้องกัน และไม่มีอะไรห้ามไฟล์ service ของตะกร้าแอบ import อะไรบางอย่างจากไฟล์หน้าจอสินค้า" เวอร์ชันที่ตรงกับแนวคิดคือจัดตามฟีเจอร์ ซึ่งสอดคล้องกับคู่มือสถาปัตยกรรมแอปของ Flutter [3] โดยแต่ละฟีเจอร์เป็นตัวต่อของตัวเอง และเปิดออกแค่สิ่งที่ฟีเจอร์อื่นได้รับอนุญาตให้แตะ [1] หัวใจอยู่ที่ไฟล์ที่ชื่อ product.dart ซึ่งทำหน้าที่เป็น "barrel file" ไฟล์ที่ re-export เฉพาะสิ่งที่ฟีเจอร์อื่นควรใช้ [1] // lib/features/product/product.dart library product; export 'src/widgets/product_card.dart'; export 'src/models/product.dart'; // note: cart_writer.dart is intentionally NOT exported. // it's an internal implementation detail of this feature. src/ คือข้างในของตัวต่อ พลาสติกที่ขึ้นรูปไว้ และ barrel

flutterprogrammingarchitecturetutorial
Building a Vision AI Assistant with Meta AI Glasses, Flutter, and Gemini
09/18 上午02:34

Building a Vision AI Assistant with Meta AI Glasses, Flutter, and Gemini

vmodal_ai

Building a Vision AI Assistant with Meta AI Glasses, Flutter, and Gemini Introduction A useful smart-glasses pattern is: Glass Camera | v Flutter Companion App | v Secure AI Backend | v Vision Model | v Answer | v Flutter / Audio Output The same architecture can be adapted to different wearable devices and AI providers. Your native wearable integration should provide image data to the Flutter layer. Future<void> onFrame(Uint8List bytes) async { final result = await assistant.analyze(bytes); print(result); } class VisionAssistant { Future<String> analyze(Uint8List image) async { // Send the image to your secure backend. return 'Detected objects and scene description'; } } A backend endpoint might look like: POST /vision/analyze Content-Type: multipart/form-data image=<frame> The backend authenticates the user and calls the selected Gemini/vision model. Do not place production AI credentials directly in the Flutter application. Instead of processing every camera frame: 30 FPS camera | v Frame sampling | v 1-3 relevant frames/sec | v AI inference Use event-based capture where possible, such as a user request or scene change. Future<void> speak(String answer) async { // Connect to your preferred TTS implementation. } The final experience can therefore be: User asks a question ↓ Glasses capture context ↓ AI analyzes image ↓ Answer generated ↓ TTS speaks answer Obtain required device permissions. Use explicit user interaction for sensitive capture. Secure backend authentication. Minimize retained images. Add request throttling. Handle offline conditions. Display clear recording/privacy states. Combining wearable capture, Flutter, and a vision model can create hands-free AI assistants while keeping the mobile application responsible for UI, state, and connectivity. Website: www.v-modal.com SDK Flutter: https://github.com/v-modal/vmodal_sdk_flutter SDK Android: https://github.com/v-modal/vmodal_sdk_android Discord: https://discord.gg/K72z28KUx Reddit: https://www.reddit.com/r/v_modal/

aifluttergeminimobile
My Android Emulator Was Eating 8 GB of RAM
09/18 上午01:19

My Android Emulator Was Eating 8 GB of RAM

Krunal Bhalala

I was working on a mobile app and noticed my Android emulator was regularly eating 7–8 GB of RAM on my Mac. On a 16 GB machine, that gets painful pretty quickly. So I started experimenting with ADB and the emulator configuration to see what I could safely remove or disable. That turned into AVDSlim. The result on my setup: ~8 GB RAM → ~1.5 GB Startup time also dropped to around 1.5 seconds. AVDSlim automates the tweaks instead of making you run a bunch of ADB commands manually. It also supports snapshots, benchmarking and headless/CI usage. I’ve tested Firebase Auth, Google Sign-In, FCM and Maps successfully, although I’m sure there are edge cases I haven’t found yet. It’s open source and MIT licensed. 🔗 GitHub: https://github.com/kdbhalala/avdslim If you use Android emulators, I’d love to know: How much RAM does yours use?

mobileandroidemulatorflutter
Q&D: Flutter App and Android-SDK
09/17 下午04:00

Q&D: Flutter App and Android-SDK

Mathieu Kerjouan

After having upgraded few tools on machine, one of my application was totally unable to run. I got a lot of warnings, especially this one: Warning: Flutter support for your project's Gradle version (8.14.0) will soon be dropped. Please upgrade your Gradle version to a version of at least 9.1.0 soon. Alternatively, use the flag "--android-skip-build-dependency-validation" to bypass this check and finally... FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:compileFlutterBuildDebug'. > A problem occurred starting process 'command '/home/user/.local/share/mise/http-tarballs/dd5ae32abcea719e3c351c56a28308b91e2ce97fb5702bf2710c2527dde522af_strip_1/bin/flutter'' * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. BUILD FAILED in 1s Running Gradle task 'assembleDebug'... 1,270ms Error: Gradle build failed due to Java/Gradle incompatibility. The Java version used for the build is 25.0.3, which is incompatible with Gradle 8.14. To fix this, you can either: 1. Upgrade your project's Gradle version (typically in gradle-wrapper.properties to a version matching the range: compatible Gradle versions for Java 25.0.3 are 9.1.0 or newer). 2. Use a different Java version for Flutter by running `flutter config --jdk-dir=<path>`. Annoying right? In fact, many other warnings were displayed, but what happened there? The last time, it was working without problem. Let have a look on the android sdk The "old" latest version of the android-sdk called Panda 4 was used, instead of the new latest version called Quail 4. $ cd Downloads $ wget https://edgedl.me.gvt1.com/android/studio/ide-zips/2026.1.4.7/android-studio-quail4-linux.tar.gz $ tar zxf android-studio-quail4-linux.tar.gz $ cd android-studio $ ls bin appletviewer.policy game-tools.sh lldb studio studio.svg brokenPlugins.db helpers ltedit.sh studio64.vmoptions format.sh idea.properties profiler.sh studio.png fsnotifier inspect.sh restarter studio.sh The latest android-studio version is now installed, but the SDK Platforms and the SDK Tools needs to be upgraded as well. It can be done via android studio directly in Menu > Tools > SDK Managers. The versions to upgrade to should be displayed with the installed one as well. If needed, install some latest versions or missing tools. $ ./bin/studio The upgraded versions should have been extracted in the ${HOME}/Android directory. It can also be done using the sdkmanager tool. $ sdkmanager --update My development machine is using mise to have the latest version of flutter and dart. The version of these applications are usually stored in the .tool-versions. It can be upgraded using the upgrade subcommand. $ cd ~/project $ cat .tool-versions flutter latest dart latest $ mise upgrade ... My environment was a mess, because many tools were living together and usually, because you want to do something quick, you put everything in your ~/.bashrc. Here the new conf. # recreates a full clean path from scratch export PATH=/bin:/usr/bin:/usr/local/bin export PATH=/sbin:/usr/sbin:/usr/local/sbin:$PATH export PATH=${HOME}/bin:$PATH # enable mise eval "$(~/mise/bin/mise activate bash)" # set android configuration export ANDROID_HOME=${HOME}/Android/Sdk export PATH=$ANDROID_HOME/tools:$PATH export PATH=$ANDROID_HOME/tools/bin:$PATH export PATH=$ANDROID_HOME/platform-tools:$PATH export PATH=$ANDROID_HOME/cmake/4.1.2/bin:$PATH export PATH=$ANDROID_HOME/cmdline-tools/latest/bin:$PATH export CHROME_EXECUTABLE=$(which chromium) export EDITOR=vim Gradle was crying because of an old version unsupported to some new versions installed. To be honest, my android application version is still quite simple, so, I fixed the issue by recreating the android directory from the flutter project root. $ cd ~/project $ mv android android.old $ flutter create . --platforms=android Recreating project .... ... Resolving dependencies...

flutterandroidtoolingdebugging

freeCodeCamp

15 條

教學、指南與實踐文章

How to Implement LEGO Architecture in Flutter [Full Handbook]
09/11 下午11:08

How to Implement LEGO Architecture in Flutter [Full Handbook]

Atuoha Anthony

Almost everyone has snapped two LEGO bricks together at some point, even without owning a single set as an adult. You press one brick down onto another, feel it click, and it holds. You likely never o

FlutterDartflutter-awarehandbook
How to Use Skills in Agentic Flutter Development: A Handbook for Devs
09/03 下午11:40

How to Use Skills in Agentic Flutter Development: A Handbook for Devs

Atuoha Anthony

One of the biggest misconceptions about AI-assisted development is that using AI means giving up the engineering experience you've built over the years. It doesn't. You can take the architecture patte

FlutterDartAIflutter-aware
How to Test Flutter Apps: Unit, Widget, Golden, and Integration Tests Explained
08/27 下午11:34

How to Test Flutter Apps: Unit, Widget, Golden, and Integration Tests Explained

Gidudu Nicholas

The first time I was asked "what's your test coverage?" in a technical interview, I didn't have a good answer. I had shipped a couple of real Flutter apps by then. They worked and users were using the

FlutterDartTestingwidget-testing
Mobile Background Execution: iOS Background Modes, Android WorkManager, and Background Services in Dart
08/25 上午01:45

Mobile Background Execution: iOS Background Modes, Android WorkManager, and Background Services in Dart

Oluwaseyi Fatunmole

Every mobile developer eventually hits the same wall: the app works perfectly when the user is looking at it. But the moment they press the home button, everything stops. A sync that should have compl

DartFluttermobileMobile Development
Chain of Responsibility Design Pattern: Decoupling Complex Business Rules, One Handler at a Time
08/22 上午04:45

Chain of Responsibility Design Pattern: Decoupling Complex Business Rules, One Handler at a Time

Oluwaseyi Fatunmole

Every system, at some point, ends up with a function that nobody wants to touch. It starts small: a simple validation check, an if statement here, another there. Then requirements grow and more condit

design patternsBehavioral Design PatternDartFlutter
How to Work with Material and Cupertino Decoupling in Flutter [Full Handbook]
08/19 上午12:05

How to Work with Material and Cupertino Decoupling in Flutter [Full Handbook]

Atuoha Anthony

Earlier this year, I published Decoupling Material and Cupertino in Flutter, which covered what was then a preview feature: Flutter's plan to separate the Material and Cupertino design libraries from

FlutterDartflutter-aware
How to Automate Flutter Releases with Fastlane and GitHub Actions for Firebase App Distribution, Google Play, TestFlight, and App Store Connect
08/12 上午12:47

How to Automate Flutter Releases with Fastlane and GitHub Actions for Firebase App Distribution, Google Play, TestFlight, and App Store Connect

Atuoha Anthony

Picture this: it's 4pm on a Friday, and your team has just merged the last feature for the sprint. But your product manager asks for a new build on TestFlight by the end of the day so the client can r

FlutterDartflutter-aware
Flutter Frontend Systems Design: How to Think Like a Senior Engineer in the AI Age
08/10 下午10:14

Flutter Frontend Systems Design: How to Think Like a Senior Engineer in the AI Age

Jesutoni Aderibigbe

Systems design has always been treated as a backend problem. Ask a group of Flutter engineers what systems design means, and most will describe server architecture: load balancers, databases, and micr

FlutterSystem Designmobile app developmentDart
How to Test AI Features in Flutter [Full Handbook]
08/08 上午12:05

How to Test AI Features in Flutter [Full Handbook]

Atuoha Anthony

You've spent two weeks building an AI assistant. The streaming chat looks beautiful, the system prompt is tight, and safety filters are configured. You demoed it to the team, and everyone was impresse

Fluttergeminiflutter-awareDart
A Deep Dive into Behavioral Patterns: The Visitor Design Pattern and its Clean Operations Across Complex Object Structures
08/07 上午12:11

A Deep Dive into Behavioral Patterns: The Visitor Design Pattern and its Clean Operations Across Complex Object Structures

Oluwaseyi Fatunmole

There's a problem that shows up in almost every growing software system, and most developers don't even realize they're hitting it until the damage is already done. You have a set of objects: differen

Designdesign patternsdesign principlesDart
Bluetooth Low Energy in Flutter: A Handbook for Devs
08/06 上午01:25

Bluetooth Low Energy in Flutter: A Handbook for Devs

Nikheel Vishwas Savant

Most Flutter tutorials stop at network calls and REST APIs. The moment you need to talk to a physical device, a heart rate monitor, a smart bulb, a fitness tracker, an industrial sensor, or your own c

bluetoothBluetooth Low EnergyFlutterFlutter SDK
From RPC to gRPC: Understanding Remote Procedure Calls, Protocol Buffers, and Modern Distributed Systems Communication
07/23 上午06:36

From RPC to gRPC: Understanding Remote Procedure Calls, Protocol Buffers, and Modern Distributed Systems Communication

Oluwaseyi Fatunmole

Every application, at some point, needs to talk to another system. A mobile app talks to a backend. A backend service talks to a payment gateway. An authentication service talks to a user service. A d

gRPCRPCDartFlutter
The Observer Design Pattern Handbook: Event-Driven Architecture & Domain-Driven Design in Dart
07/17 上午06:20

The Observer Design Pattern Handbook: Event-Driven Architecture & Domain-Driven Design in Dart

Oluwaseyi Fatunmole

Every application, at some point, has to deal with a fundamental challenge: something happens, and several other things need to react to it. A user logs in, and the app needs to save a token, cache th

#Domain-Driven-DesignDartMobile DevelopmentFlutter
How to Fix App Jank: A Practical Guide to Profiling Flutter Apps with DevTools
07/08 下午11:47

How to Fix App Jank: A Practical Guide to Profiling Flutter Apps with DevTools

Gidudu Nicholas

Flutter makes it fast to build beautiful UIs. That speed is one of the framework's greatest strengths, but it also creates a subtle problem: performance issues are easy to introduce and difficult to f

Flutterjankdevtoolsperformance
How to Use Claude Code to Build Flutter Apps Faster — Best Practices for 2026
06/29 下午10:05

How to Use Claude Code to Build Flutter Apps Faster — Best Practices for 2026

Jesutoni Aderibigbe

In early 2023, I was interning at a US-based company, long before agentic AI became part of everyday development. We had tools like ChatGPT, Gemini, and Copilot, but they were mostly chat interfaces:

FlutterFlutter App Developmentclaude-codeclaude

Hacker News

20 條

技術社群討論與專案連結

Show HN: I compiled FreeRDP into a Flutter app so my phone can do RDP and SSH
09/19 上午02:14

Show HN: I compiled FreeRDP into a Flutter app so my phone can do RDP and SSH

neil_thomas

Hi HN, I'm the developer. XConnect is an SSH/SFTP client for iOS and Android that also has a real RDP client built in, so one app covers my Linux and Windows machines when I'm away from my desk. No account needed: tap "Continue Offline" and everything stays on the phone. I built it because fixing things from my phone meant switching between an SSH app, a file app and Microsoft's RDP app, and on a small screen the switching was the worst part. What it does: - SSH and Telnet, with a key row for phone keyboards (Esc, Tab, arrows, sticky Ctrl/Alt, one-tap Ctrl-C/D/L/Z) and multiple sessions. - RDP (iOS for now). FreeRDP 3 is compiled into the app, so the phone speaks RDP directly, with no gateway or relay. Trackpad or direct-touch mode, pinch to zoom, two-finger right-click and scroll. Hardware keyboards are forwarded by scancode. - SFTP, jump hosts (ProxyJump-style, for both SSH and SFTP), and 14 built-in scripts you can run on a server with one tap. - An optional AI agent with your own API key (OpenAI-compatible endpoints, Anthropic, or Ollama on your LAN). It runs commands on the host and asks before anything that looks destructive. It does nothing until you configure it. Some technical details: the native RDP core sends Dart one event per frame (connected / bitmap / resize / error / disconnected), in the same binary format my desktop app's RDP helper uses. Dart applies the updates to an RGBA framebuffer and paints it with decodeImageFromPixels. SSH is dartssh2 and the terminal is xterm.dart. Scripts run as heredocs, because my first version joined the lines with "; " and put the whole script behind the shebang comment. Credentials: passwords and private keys are stored in the iOS Keychain / Android Keystore. Sync is optional. Records are encrypted on the device with AES-256-GCM before upload, with a key derived from your account password (PBKDF2, then scrypt per record). To be upfront: login currently sends that password to the server over TLS, so this is not zero-knowledge yet. [Switching login to a separately derived auth hash is next on my list.] The app is closed source. I know that's a hard sell for something that holds SSH keys, so ask me anything about how credentials are handled. Not there yet: RDP on Android, port forwarding on mobile (the desktop app has it), passphrase-protected keys, keyboard-interactive 2FA, and mosh. Pricing: SSH, Telnet, SFTP, scripts and one jump host are free. Pro ($8/month, $68/year, or $88 one-time) adds RDP, the AI agent, sync and unlimited jump hosts. The same account also works in the desktop app for Windows, macOS and Linux. iOS: https://apps.apple.com/us/app/xconnect-ssh-rdp-client/id6810... I'd love feedback, especially from people who manage servers from their phone. What's missing? Comments URL: https://news.ycombinator.com/item?id=49758100 Points: 3 # Comments: 0

09/18 上午07:27

PPPlayer – An open-source music player built with Flutter

lucasveneno

Article URL: https://ppplayer.com Comments URL: https://news.ycombinator.com/item?id=49748159 Points: 1 # Comments: 0

I ported a VB6 game to Flutter and generated all 14 art themes
09/10 下午09:31

I ported a VB6 game to Flutter and generated all 14 art themes

lioil

Article URL: https://apps.apple.com/cz/app/kirian/id6774868017 Comments URL: https://news.ycombinator.com/item?id=49643435 Points: 3 # Comments: 0

Kelivo: A Flutter LLM Chat Client. Support Mobile and Desktop
09/10 下午03:37

Kelivo: A Flutter LLM Chat Client. Support Mobile and Desktop

xbmcuser

Article URL: https://github.com/Chevey339/kelivo Comments URL: https://news.ycombinator.com/item?id=49639819 Points: 2 # Comments: 0

09/08 下午05:08

Arch Linux on a OnePlus 12R, Powered by Denial Wayland and Flutter Compositor

dazhbog

Article URL: https://www.reddit.com/r/mobilelinux/comments/1w80kvt/arch_linux_on_a_oneplus_12r_powered_by_the_denial/ Comments URL: https://news.ycombinator.com/item?id=49607677 Points: 1 # Comments: 0

Show HN: CocoCut – A zero-cloud, 1-second video diary engine built with Flutter
09/06 上午08:29

Show HN: CocoCut – A zero-cloud, 1-second video diary engine built with Flutter

xcc3641

Article URL: https://cococut.app/en Comments URL: https://news.ycombinator.com/item?id=49582167 Points: 2 # Comments: 1

09/06 上午02:48

DartNative: Beyond the Limits of React Native and Flutter

iosephmagno

Hi React Native and Flutter devs! We’re launching DartNative, a cross-platform framework for Dart that aims to deliver a truly native look and feel on iOS and Android. Would love to hear what you think. https://x.com/iosemagno/status/2096288716721356974?s=46 Comments URL: https://news.ycombinator.com/item?id=49579471 Points: 1 # Comments: 0

09/06 上午01:56

GoEven – Free, ad-free group expense splitter built with Go, gRPC, and Flutter

Xainpro

Article URL: https://goeven.app Comments URL: https://news.ycombinator.com/item?id=49578979 Points: 2 # Comments: 0

Show HN: Flutter Starter A production-ready Flutter app boilerplate
08/25 下午07:50

Show HN: Flutter Starter A production-ready Flutter app boilerplate

Harish_0089

Article URL: https://github.com/GeekyAnts/flutter-starter Comments URL: https://news.ycombinator.com/item?id=49432329 Points: 3 # Comments: 0

08/15 上午11:31

Flutter_scene 0.21.0 runs 3D apps with Flutter GPU and Impeller

chem83

Article URL: https://xcancel.com/antibot/captcha Comments URL: https://news.ycombinator.com/item?id=49307343 Points: 1 # Comments: 0

08/13 下午04:32

Flet: Build cross-platform apps in Python, on top of Flutter

theanonymousone

Article URL: https://flet.dev/ Comments URL: https://news.ycombinator.com/item?id=49283154 Points: 1 # Comments: 0

Flutter 3.47
08/13 上午07:46

Flutter 3.47

gumby271

Article URL: https://flutter.dev/blog/whats-new-in-flutter-3-47 Comments URL: https://news.ycombinator.com/item?id=49280061 Points: 207 # Comments: 214

I built a local 3D marketplace with pizza-style tracking in Flutter
08/13 上午03:16

I built a local 3D marketplace with pizza-style tracking in Flutter

Nearnook_dev

Article URL: https://play.google.com/store/apps/details?id=com.lahoucintiyar.nearnook&hl=en_US Comments URL: https://news.ycombinator.com/item?id=49277267 Points: 1 # Comments: 0

Openhare: AI-powered desktop SQL client. Cross-platform. Built with Flutter
08/13 上午01:51

Openhare: AI-powered desktop SQL client. Cross-platform. Built with Flutter

thunderbong

Article URL: https://github.com/sjjian/openhare Comments URL: https://news.ycombinator.com/item?id=49276189 Points: 4 # Comments: 0

FieldFleet – self-hostable field operations built with Flutter and Supabase
08/12 上午02:33

FieldFleet – self-hostable field operations built with Flutter and Supabase

iguardo

Article URL: https://taskfleetai.github.io/fieldfleet/ Comments URL: https://news.ycombinator.com/item?id=49262555 Points: 3 # Comments: 0

Flutter desktop apps can draw to multiple windows now
08/10 下午09:18

Flutter desktop apps can draw to multiple windows now

matthewkosarek

Article URL: https://www.youtube.com/watch?v=yXj6HGTgKX0 Comments URL: https://news.ycombinator.com/item?id=49243250 Points: 2 # Comments: 0

Denial WM: New Wayland Compositor with Flutter Directly Embedded
08/06 上午12:19

Denial WM: New Wayland Compositor with Flutter Directly Embedded

mikece

Article URL: https://www.phoronix.com/news/Denial-WM-Compositor Comments URL: https://news.ycombinator.com/item?id=49184965 Points: 4 # Comments: 0

Rejourney Flutter Analytics in Beta: Session Replay for Flutter GPU and Impeller
08/04 上午06:02

Rejourney Flutter Analytics in Beta: Session Replay for Flutter GPU and Impeller

mrr7337

Article URL: https://rejourney.co/engineering/2026-08-01/flutter-sdk-open-beta Comments URL: https://news.ycombinator.com/item?id=49162055 Points: 1 # Comments: 0

I made Squirrel game with Flutter and Flame
08/02 上午03:09

I made Squirrel game with Flutter and Flame

dmvvilela

Article URL: https://danvilela.com/squirrel-up Comments URL: https://news.ycombinator.com/item?id=49137413 Points: 5 # Comments: 0

Kaisel – Routes as Values. Dart 3 Native Router for Flutter
08/02 上午12:45

Kaisel – Routes as Values. Dart 3 Native Router for Flutter

TheWiggles

Article URL: https://kaisel.dev/ Comments URL: https://news.ycombinator.com/item?id=49135985 Points: 58 # Comments: 11

Medium

10 條

Flutter 相關文章精選

Building particle_fx: A Flexible, High-Performance Particle Engine for Flutter
09/19 下午04:47

Building particle_fx: A Flexible, High-Performance Particle Engine for Flutter

Samih Bouguerra

How we built an extensible Flutter particle engine with emitters, forces, streams, trails, presets, and efficient canvas rendering. Continue reading on Medium »

open-sourceflutterdartanimation
12 Flutter Animations That Make Your Apps Feel Premium (With Code Examples)
09/19 下午04:01

12 Flutter Animations That Make Your Apps Feel Premium (With Code Examples)

Nabil Krissane

Most Flutter apps work fine , but they don’t feel good. Continue reading on Medium »

uxmobile-app-developmentcodingflutter
Am I Human, Ann?
09/19 下午02:20

Am I Human, Ann?

Rose Kma

Or am I merely an accident that learned to say I? Continue reading on Medium »

flutterux-designsatirenodejs
Native Android vs Flutter vs Kotlin Multiplatform in 2026
09/19 下午02:04

Native Android vs Flutter vs Kotlin Multiplatform in 2026

Sixtin - Mobile App Developer

I’ve shipped apps in all three. Here’s what actually matters when you’re the one debugging at 11 PM. Continue reading on Medium »

fluttermobile-app-developmentiosandroid
Dart Memory Under the Hood: Heap, Garbage Collection & Object Lifetimes
09/19 下午01:41

Dart Memory Under the Hood: Heap, Garbage Collection & Object Lifetimes

Developer Hub

Stop using Flutter. Start understanding Flutter. Continue reading on Flutter Hub »

programmingtechnologysoftware-developmentdart
Cross-Platform App Benchmarks: Flutter vs. React Native vs. Native Swift/Kotlin
09/19 下午12:27

Cross-Platform App Benchmarks: Flutter vs. React Native vs. Native Swift/Kotlin

Jupiter Dev

What the numbers say in September 2026, which ones deserve trust, and what settles the choice in practice Continue reading on Medium »

appleappsaireact-native
Dependency Injection in Flutter : GetIt
09/19 上午07:31

Dependency Injection in Flutter : GetIt

Manish Kumar

If you are coming from Android development, you can think of GetIt as a lightweight way to manage and access dependencies in your Flutter… Continue reading on Medium »

flutter-app-developmentdependency-injectiongetitflutterflutter
An OTP field that becomes its own loading animation in Flutter
09/19 上午04:35

An OTP field that becomes its own loading animation in Flutter

Mohamed Draz

I’ve published otp_animated_fields on pub.dev. It's a Flutter package where the boxes you type your verification code into become the… Continue reading on Medium »

flutter-uiflutterdartanimation
Assets & Media in Flutter
09/18 下午11:38

Assets & Media in Flutter

Aly Route

Images, JSON, fonts, network pictures, fade-in placeholders, video playback, and build-time asset transformers — one project at a time. Continue reading on Medium »

flutter
Flutter in 2026: The Framework Is Changing — And Developers Need to Change With It
09/18 下午11:04

Flutter in 2026: The Framework Is Changing — And Developers Need to Change With It

Pramod Yadav

For years, Flutter was easy to explain: Continue reading on Medium »

aidartsoftware-developmentflutter

Reddit

7 條

社群日榜討論與資源

09/19 上午05:09

android 17 is the first version in the history of the aosp project where google introduced new system APIs only exclusively to their own version and not the foss one

/u/Bachihani

what does this mean? it means they used their control over the android project to give themselves a clear advantage over everyone else, new functionality in android 17 is limited to only the pixel OS and the OSs certified by google or their official partners, like samsung and some other manufacturers. independent ROMs like grapheneOS, and all the various forks of android will not have access to those new low level system APIs, they will also receive security patches two months after "certified" roms. ordinary users and even regulatory bodies can't understand the impact of such behaviour. only developers can. and only developers can force google to correct this behaviour. the exact details of the new APIs are not yet fully known but expect to relate to security and privacy. make your voice heard. don't accept this kind of behaviour. submitted by /u/Bachihani [link] [comments]

09/19 上午01:15

Is the $599 MacBook Neo (8GB/256GB) good enough for Flutter dev, or should I get a Windows laptop?

/u/achraf123siuuuu

Hey everyone, I’m looking at the new MacBook Neo (A18 Pro, 8GB RAM, 256GB SSD) as a budget option for mobile app development, specifically Flutter. Before buying, I want to know if anyone is already using it for coding: 8GB RAM: Is it smooth enough to run VS Code / Android Studio alongside the iOS Simulator or Android Emulator? 256GB SSD: Does storage run out quickly once Xcode, Android SDKs, Flutter tools, and build caches are installed? A18 Pro Performance: How does the fanless chip hold up during longer compilation times? For around $600, would I be better off buying a $600 Windows laptop with 16GB RAM and 512GB SSD, or is having native macOS for iOS building worth the 8GB limit? Appreciate any insights from anyone actively developing on the Neo! submitted by /u/achraf123siuuuu [link] [comments]

09/19 上午03:54

iPhone Duo simulator now available

/u/eibaan

So, now that Apple released Xcode 27.1 beta 1 with iPhone Duo support a few hours ago, has anybody already tested their app on the Duo emulator and added support for the different modes? I'm curious to know while still downloading :) submitted by /u/eibaan [link] [comments]

09/18 下午11:48

How to decide if Flutter is what I need

/u/fokines

Hi there! I wanf to try to build an app for both IOS and Android, but I'm not sure if Flutter is a good idea, maybe it's better to build it for one platform first and then do the same for another. How to decide? What kind of questions I have to consider? I have a little experience in development (graduated as a software engineer in 2024, but I have been working as a DevOps engineer for 3+ years). Appreciate any help and advice. Thanks submitted by /u/fokines [link] [comments]

09/19 上午04:27

I switched from VS Code to Zed for Flutter and the only thing I missed was hot reload on save, so I built a small macOS app for it

/u/Wide_Cardiologist0

Over the last few months VS Code became painfully slow on my Flutter projects, with some actions taking ten seconds or more. I tried Zed and Neovim and loved the editors, but hot reload lives in the VS Code extension, so from the terminal I was typing r by hand after every save. That got old fast. So I built Hotplate, a small native macOS app that does only that part: pick a project and a device, press Run, and every save of a .dart file under lib/ triggers a hot reload, from whatever editor you use. It reads your launch.json, has a menu bar panel and global shortcuts so you never leave the editor, and file paths in stack traces are links that open the file at that line in your editor. Free, open source (MIT), no dependencies, signed and notarized. Needs macOS 14 and a Flutter SDK. https://github.com/hrvojeBencik/hotplate or brew install hrvojebencik/tap/hotplate I made it for myself, so I'm curious what others are missing. I'd especially like to hear from Neovim users which "open file at line" command fits their setup best. submitted by /u/Wide_Cardiologist0 [link] [comments]

09/18 下午09:02

Is Flutter the best choice for a fast, fluid, aesthetic kiosk app? (Zero coding background, building with Claude Code)

/u/PRANI69

Hey all, I'm building an app that'll run on a touchscreen kiosk (think: freestanding digital signage, portrait orientation, always-on in a physical retail setting). It needs to feel fast and fluid to interact with, and look genuinely polished/aesthetic. This isn't a back-office tool, it's customer facing and first impressions matter a lot. Some context that might shape the advice: I have zero coding background. I'm planning to build this using Claude Code since i have no coding expertide The app needs to run reliably in kiosk mode on a touchscreen (locked down, no accidental exits, restart-safe). Smooth animations/transitions matter a lot for the "feel" of it. It'll involve a camera capture step and calling some external APIs, so it's not purely a static UI. I'm currently leaning toward Flutter over native Android, mainly because I've read it's faster to iterate on and better for animation heavy, aesthetic UI but I have no first hand experience to validate that, and I'd rather get real opinions before committing weeks to a stack. Questions: Is Flutter actually the right call here, or would native Android (or something else entirely) serve a kiosk use case better? For someone with zero coding background relying entirely on an AI coding agent, does that change which stack is more forgiving/easier to get right? Any known gotchas with Flutter specifically in locked-down kiosk mode on Android hardware? Appreciate any real-world experience, trying to avoid picking the wrong foundation before I sink a month into this. Thank you soo much! submitted by /u/PRANI69 [link] [comments]

09/18 下午08:54

Tired of messy imports and merge conflicts? I built tidy_imports to automatically sort and standardize your Dart imports.

/u/Franklyn_r_s

Hey everyone, If you work on medium to large Flutter projects—especially those using Clean Architecture or feature-first structures—you know how quickly the import sections at the top of your files can become an absolute mess. It makes PR reviews annoying and sometimes even causes unnecessary merge conflicts. I couldn't find a solution that fit exactly what I needed, so I built tidy_imports. It’s a straightforward Dart package designed to automatically organize, sort, and group your imports to keep your codebase standardized. What it does: 🧹 Organizes by group: Automatically groups your imports (e.g., dart: core libraries first, followed by package: imports, and then relative project imports). 🔤 Alphabetical sorting: Sorts everything neatly within their specific groups. ⚡ CLI Support: You can run it directly from the terminal to clean up your entire project at once or just specific files. 🏗️ Scalability: Perfect for maintaining consistency across a team or in projects with complex architectural patterns. Links: Pub.dev: https://pub.dev/packages/tidy\_imports GitHub: https://github.com/Franklyn-R-Silva/tidy_imports I've been using it in my own daily development and it has saved me a lot of manual formatting time. I would love for you guys to try it out, tear it apart, and let me know what you think! Any feedback, feature requests, or GitHub stars/PRs are highly appreciated. Thanks! 💙 submitted by /u/Franklyn_r_s [link] [comments]

FAQ

常見問題