24h Intel · 84 條
Flutter 24小時情報 GitHub 熱門倉庫與技術資訊
每日彙總 Flutter / Dart GitHub 熱門倉庫,以及 Dev.to、freeCodeCamp、Hacker News、Medium、Reddit 的近期技術資訊,追蹤 24 小時 Stars 增量與社群討論。
GitHub
20 條Dart 與 Flutter 相關倉庫熱度
chen08209/FlClash
更新於 07/22 上午06:32
localsend/localsend
更新於 07/22 上午06:32
spotiflacapp/SpotiFLAC-Mobile
更新於 07/22 上午06:09
Predidit/Kazumi
更新於 07/22 上午06:00
AppFlowy-IO/AppFlowy
更新於 07/22 上午06:25
flutter/flutter
更新於 07/22 上午06:46
bggRGjQaUbCoE/PiliPlus
更新於 07/22 上午01:32
KaringX/karing
更新於 07/22 上午02:48
KRTirtho/spotube
更新於 07/22 上午05:39
echo-loop/Echo-Loop
更新於 07/21 下午11:05
hiddify/hiddify-app
更新於 07/22 上午06:11
ente/ente
更新於 07/22 上午06:45
bagisto/opensource-ecommerce-mobile-app
更新於 07/22 上午03:36
KaringX/clashmi
更新於 07/22 上午06:06
ImranR98/Obtainium
更新於 07/22 上午03:29
Sle2p/AniCh
更新於 07/22 上午01:45
Chevey339/kelivo
更新於 07/22 上午01:42
simonoppowa/OpenNutriTracker
更新於 07/22 上午04:36
venera-app/venera
更新於 07/22 上午03:02
jiangtian616/JHenTai
更新於 07/21 下午10:10
Dev.to
12 條開發者文章與專案分享
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.
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.
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
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
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.
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
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?
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!
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
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/
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?
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...
freeCodeCamp
15 條教學、指南與實踐文章
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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:
Hacker News
20 條技術社群討論與專案連結
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
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
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
xbmcuser
Article URL: https://github.com/Chevey339/kelivo Comments URL: https://news.ycombinator.com/item?id=49639819 Points: 2 # Comments: 0
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
xcc3641
Article URL: https://cococut.app/en Comments URL: https://news.ycombinator.com/item?id=49582167 Points: 2 # Comments: 1
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
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
Harish_0089
Article URL: https://github.com/GeekyAnts/flutter-starter Comments URL: https://news.ycombinator.com/item?id=49432329 Points: 3 # Comments: 0
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
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
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
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
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
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
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
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
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
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
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
Samih Bouguerra
How we built an extensible Flutter particle engine with emitters, forces, streams, trails, presets, and efficient canvas rendering. Continue reading on Medium »
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 »
Am I Human, Ann?
Rose Kma
Or am I merely an accident that learned to say I? Continue reading on Medium »
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 »
Dart Memory Under the Hood: Heap, Garbage Collection & Object Lifetimes
Developer Hub
Stop using Flutter. Start understanding Flutter. Continue reading on Flutter Hub »
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 »
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 »
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 »
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 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 »
社群日榜討論與資源
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]
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]
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]
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]
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]
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]
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