<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Flutter - Medium]]></title>
        <description><![CDATA[Flutter is Google&#39;s UI framework for crafting high-quality native interfaces on iOS, Android, web, and desktop. Flutter works with existing code, is used by developers and organizations around the world, and is free and open source. Learn more at https://flutter.dev - Medium]]></description>
        <link>https://blog.flutter.dev?source=rss----4da7dfd21a33---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Flutter - Medium</title>
            <link>https://blog.flutter.dev?source=rss----4da7dfd21a33---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Mon, 13 Apr 2026 07:17:38 GMT</lastBuildDate>
        <atom:link href="https://blog.flutter.dev/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Flutter’s Material and Cupertino code freeze]]></title>
            <link>https://blog.flutter.dev/flutters-material-and-cupertino-code-freeze-d32d94c59c38?source=rss----4da7dfd21a33---4</link>
            <guid isPermaLink="false">https://medium.com/p/d32d94c59c38</guid>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[flutter-material-design]]></category>
            <category><![CDATA[material-design]]></category>
            <category><![CDATA[flutter-cupertino]]></category>
            <dc:creator><![CDATA[Justin McCandless]]></dc:creator>
            <pubDate>Tue, 07 Apr 2026 16:01:02 GMT</pubDate>
            <atom:updated>2026-04-07T16:01:01.852Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*JN1_t6kPRkgGFVJyetZE0w.png" /><figcaption>Material and Cupertino libraries are frozen and will be moved from the Flutter framework to new packages</figcaption></figure><p>We’ve been hard at work preparing to decouple Material and Cupertino from the Framework, and now our first major milestone has arrived! As of April 7th, all contributions to the Material and Cupertino libraries in flutter/flutter are frozen. Our next milestone will be the re-release of these libraries as the <a href="https://pub.dev/packages/material_ui">material_ui</a> and <a href="https://pub.dev/packages/cupertino_ui">cupertino_ui</a> packages on pub.dev.</p><p>This means that, after the code freeze, no more changes will be allowed to the Material and Cupertino libraries inside of flutter/flutter. Further development on these libraries will resume in the <a href="https://github.com/flutter/packages">flutter/packages</a> repository once the new packages are released.</p><p><strong>If you write Flutter apps or plugins, but don’t contribute to Material or Cupertino itself, you can stop reading now. This won’t affect you… yet.</strong></p><p>After the 3.44 stable release, the new packages will be published and developers will eventually need to migrate. The old Material and Cupertino code will be deprecated in the stable release <em>after</em> 3.44 and deleted some time after that. Of course, when the time comes, we’ll follow up with detailed instructions about this migration.</p><p>For those who actively contribute to these libraries or are otherwise invested in their development, here are some things you should know:</p><h3>What if you have PRs in flight?</h3><p>Despite the code freeze, we want development on Material and Cupertino to continue with minimal interruption! Any open PRs that touch Material or Cupertino should remain open, and reviewers will continue reviewing and giving feedback as usual. Once the new packages are published, we will provide instructions on how to port these kinds of PRs to flutter/packages. Eventually, your change will go out as a part of a new material_ui or cupertino_ui release.</p><h3>How about new and existing issues related to Material and Cupertino?</h3><p>Issues that relate to Material or Cupertino will remain in flutter/flutter as always. This unified issue tracker approach is the same pattern that we follow for other packages in the flutter/packages repo and a few other repositories.</p><h3>Why freeze the code now?</h3><p>The moment that we release the 1.0.0 versions of the material_ui and cupertino_ui packages, we think it’s important to have a seamless migration process for every Flutter developer who is ready to migrate, regardless of which release channel they’re coming from. This means that we need to keep the risk of breaking changes to an absolute minimum between the Material and Cupertino libraries in flutter/flutter and in flutter/packages. We can achieve this by freezing the code one stable release cycle ahead and copying that frozen code to the new packages.</p><p>The first step in the migration process for Flutter developers is to perform a normal SDK migration to v3.44 or above on any channel. Once there, we know that they have a copy of Material and Cupertino that is frozen. Even if they upgrade their SDK again, that Material and Cupertino code will not change (until it’s deprecated and deleted in the long term). What’s more, we know that the frozen Material and Cupertino code is identical to the code in the 1.0.0 material_ui and cupertino_ui packages, or as close to identical as possible. From there, the developer can migrate from the Material and Cupertino code inside their copy of the SDK onto the material_ui and cupertino_ui packages with minimal friction.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/961/1*NkrFO7smrNSo2NofNp0EVA.png" /></figure><h3>How we got here</h3><p>It’s been a long journey to this point with <em>many</em> contributions and feedback from across the community. A few months ago when I realized that we had test dependencies that would get in the way of decoupling, I posted an <a href="https://github.com/flutter/flutter/issues/177028">issue</a> and figured I was in for a lot of migration work. Instead, contributors from across the community immediately jumped in to help migrate hundreds of tests. The support we received from first-time contributors to veterans was critical to getting us ready for decoupling. THANK YOU!</p><h3>What’s next?</h3><p>After the code freeze, we’ll begin preparing for migration to the new material_ui and cupertino_ui packages. This includes tasks like porting the code over, implementing CI/CD, testing, and setting up docs infrastructure to make sure we can keep the same high quality developer experience that you expect from Flutter.</p><p>As the new packages near readiness, we’ll publish more information about how to migrate successfully, so keep an eye out. Also, if you see anything that you think we’ve missed, please jump in with an issue or a PR. We couldn’t have gotten this far without help from the amazing Flutter community, and we can’t wait to see where we’ll go from here.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d32d94c59c38" width="1" height="1" alt=""><hr><p><a href="https://blog.flutter.dev/flutters-material-and-cupertino-code-freeze-d32d94c59c38">Flutter’s Material and Cupertino code freeze</a> was originally published in <a href="https://blog.flutter.dev">Flutter</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How Dart and Flutter are thinking about AI in 2026]]></title>
            <link>https://blog.flutter.dev/how-dart-and-flutter-are-thinking-about-ai-in-2026-e2fd64e1fdd0?source=rss----4da7dfd21a33---4</link>
            <guid isPermaLink="false">https://medium.com/p/e2fd64e1fdd0</guid>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[ai-agent]]></category>
            <category><![CDATA[flutter-app-development]]></category>
            <category><![CDATA[flutter]]></category>
            <dc:creator><![CDATA[Mariam Hasnany]]></dc:creator>
            <pubDate>Wed, 01 Apr 2026 16:01:01 GMT</pubDate>
            <atom:updated>2026-04-01T16:01:01.359Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*acnlJyV5J3HU4jFbo2LQog.gif" /><figcaption>Dash imagines the future</figcaption></figure><p>Last month, we published <a href="https://blog.flutter.dev/flutter-darts-2026-roadmap-89378f17ebbd">Flutter and Dart’s 2026 Roadmap</a>, a peek into how our teams are approaching our core mission: Building the most popular, fastest growing, and highest-productivity multi-platform UI framework. But it’s impossible to talk about development in 2026 without acknowledging AI.</p><p>To meet this moment, today we are sharing our data-driven and honest thoughts on <em>how</em> our teams approach Dart and Flutter + AI in 2026. This post is intended to be less of a roadmap and more of a collection of thoughts guiding our strategy. Transparency is a core pillar of Flutter, and as an open source project, we believe in the value of experimentation in public. Interpret this as a snapshot of how we’re thinking about AI today; we value your input and feedback but we also recognize that, in this rapidly shifting environment, strategy and approach may change as models, tools, and their use evolve.</p><h3>The Agentic shift by the numbers</h3><p>Flutter gained initial traction by staying ahead of the curve and adapting nimbly to the needs of developers building cross-platform. Now, AI represents another variable in how we think about our ecosystem. Not because every developer needs to use AI, but because we need to consider how it’s shifting our goals for those who do.</p><p>AI adoption is no longer a future trend; it is the current reality. The <a href="https://survey.stackoverflow.co/2025/ai">2025 Stack Overflow Developer Survey</a> showed that 84% of all developers use AI tools in some way within their daily workflows, and in our <a href="https://docs.flutter.dev/reference/user-surveys">2025 Flutter User Survey</a>, we found that 79% of Flutter developers specifically report using AI assistants while working with Flutter.</p><p>However, this rapid adoption has revealed a significant “trust gap.” While <a href="https://github.blog/news-insights/research/research-quantifying-github-copilots-impact-on-developer-productivity-and-happiness/#finding-1-developer-productivity-goes-beyond-speed">73% of developers feel more productive</a> because they can reduce the friction of starting new tasks, <a href="https://survey.stackoverflow.co/2025/ai#developer-tools-ai-acc-ai-acc">46% do not yet trust the accuracy</a> of AI tools for critical tasks like writing, debugging, or fixing code. This leads to a “verification tax” — the time engineers pay auditing the output or fine-tuning instructions to achieve correctness.</p><h3>Our approach: Who we build for and the principles that guide us</h3><p>As the premier multi-platform UI framework from Google, Flutter is uniquely positioned to focus on the AI builders in our ecosystem. The principles ensure that Dart and Flutter remain the most reliable choice for developers building apps that run on any screen.</p><h4>Who we are solving for</h4><p>Our strategy addresses builders across the spectrum of AI adoption from traditional to agentic development:</p><ul><li><strong>The traditional developer:</strong> Earn trust in AI for those who depend on core Dart and Flutter tooling. Traditional developers care deeply about thinking through problems themselves and using developer tools to dig under the hood. We aim to improve the existing foundation for them, which in turn improves the quality of AI and builds trust in agentic development.</li><li><strong>The AI-assisted developer:</strong> Improve productivity with AI for those who have adopted AI coding agents in their Dart and Flutter workflows. These engineers rely on AI for repetitive, tedious tasks and boilerplate code so they can spend more time on complex functional and architectural code. Our developer experience team is exploring AI tooling such as MCP servers, Agent Skills and other solutions in this space.</li><li><strong>The AI-first developer :</strong> Make AI work for those who haven’t yet discovered Flutter is the best way to build their apps. These builders are creating apps with natural language. By recognizing where their needs overlap other personas, we ensure our framework is ready for the future of AI development. Collaborations here might include guidance on Flutter with Antigravity, and other vibe-coding products that reflect <a href="https://youtu.be/v6Rzo5khNE8?si=9sKcyc0Rlgevoe7L&amp;t=2432">“Vibe once, deploy everywhere” concept introduced at Google I/O 2025</a>.</li></ul><h4>Our driving principles</h4><ul><li><strong>Humans first:</strong> Dart remains a “human first” language. We prioritize making code readable and manageable for developers, even when it is generated by agents.</li><li><strong>Add, don’t replace:</strong> AI tools should add and improve the experience of building with Dart and Flutter. Each developer should be empowered to use AI assistance as much as they desire, and on a timeline that they choose. We intend to ensure AI is grounded in our documentation and foundational tooling as the source of truth.</li><li><strong>Open standards &amp; agent agnostic:</strong> We meet developers where they are. By leveraging open standards like the Model Context Protocol (MCP), we ensure Flutter works well with any agent you choose, not just Gemini. For example, we recently added an MCP tool to ensure hot reload can be used during AI Assisted development.</li><li><strong>Trust through quality:</strong> We aim to solve the “verification tax” by ensuring AI-generated code is accurate, idiomatic, and compliant with project standards. Ongoing investments and partnerships with Google Deepmind and Antigravity on model evaluation drive quality from the model through to AI developer tools. If you’re a model engineer, hit us up, we’d love to make your model write beautiful Dart code!</li></ul><h3>Let us know what you think</h3><p>We are intentionally experimenting in public because no one knows exactly where this space is going. We invite the community to join us, share your feedback, and help steer the future of Dart and Flutter. Comment here, on social media, or via community forums; we value your thoughts and these conversations.</p><p>… Or continue building apps without AI, that’s totally valid too, and we welcome feedback on our developer roadmap in our previous post. For a deeper dive into our plans, you can view the full <a href="https://github.com/flutter/flutter/blob/master/docs/roadmap/Roadmap.md">official 2026 Roadmap</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e2fd64e1fdd0" width="1" height="1" alt=""><hr><p><a href="https://blog.flutter.dev/how-dart-and-flutter-are-thinking-about-ai-in-2026-e2fd64e1fdd0">How Dart and Flutter are thinking about AI in 2026</a> was originally published in <a href="https://blog.flutter.dev">Flutter</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[20 apps in 20 days with Flutter and Antigravity]]></title>
            <link>https://blog.flutter.dev/20-apps-in-20-days-with-flutter-and-antigravity-c62ce307c60b?source=rss----4da7dfd21a33---4</link>
            <guid isPermaLink="false">https://medium.com/p/c62ce307c60b</guid>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[builders]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[google-antigravity]]></category>
            <category><![CDATA[flutter-app-development]]></category>
            <dc:creator><![CDATA[Kevin Lamenzo]]></dc:creator>
            <pubDate>Thu, 05 Mar 2026 15:42:28 GMT</pubDate>
            <atom:updated>2026-03-05T15:42:26.316Z</atom:updated>
            <content:encoded><![CDATA[<p><em>Why I stopped planning and started building</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8qm-mMi6Hod2jBw1_2nNEw.png" /><figcaption>Dash having fun building Flutter apps.</figcaption></figure><p>Hi, I’m Kevin Lamenzo! I recently joined the Dart and Flutter teams (🎉), and this January I set out on a quest: build 20 apps in 20 days using Flutter and <a href="https://antigravity.google/">Antigravity</a>. But why? First, the cost of curiosity has officially hit zero. You can go from idea to app in 10 minutes. Second, as a new member of the team I wanted to learn about the framework by building something. Last, and most importantly, I wanted to test the theory that in 2026, we all can be builders now.</p><p>I’m here to share what I learned from the trenches. If you take only one thing from this post, let it be this: stop reading, and go build something.</p><h3>The spark</h3><p>My first app was a health tracker.</p><p>During a recent check-up, my physician “strongly suggested” that I watch my blood pressure and alcohol intake. My first reaction? “Don’t tell me what to do!” My second reaction? “I’m gonna build my own app for that.” No subscription offers, no data harvesting, no gamified onboarding. Just a simple tool that solved my specific problem.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/279/1*sV9X0IeCaF-IInvjLa4Ucg.png" /><figcaption>My first app — a personal health tracker.</figcaption></figure><h3>Why Flutter?</h3><p>I’m always on the go. I initially built a web app, which is nice, but I needed this tool to be in my pocket. Flutter makes the transition from web app to mobile app feel like magic. Antigravity barely needed to change the code.</p><p>After building the mobile version, I even opened a <a href="https://play.google.com/console/">Google Play Developer</a> account ($25), and released the app to myself as a tester. Now my creation is live on my own phone (although I still don’t have a logo or icon).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/723/1*0WJQz_1nMC95larhInedMg.png" /><figcaption>The health tracker app, with a default icon, on my phone.</figcaption></figure><h3>Tearing through ideas</h3><p>The success of building the health tracker was intoxicating. By the end of the first week, I had four more apps on my phone and I had launched an internal blog (I called it “App a Day”) to document my journey and share the messiness with my colleagues.</p><p>This felt like more than vibecoding — I was building. I was exploring my phone’s sensors, working with haptics, and even using APIs.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Nrox9tKM1Jok5MQWp4q4Og.png" /><figcaption>My internal blog landing page — App a Day</figcaption></figure><h3>Hitting a wall trying to scale</h3><p>Everything wasn’t rosy. When I tried to take one of my quick idea apps and add to it every day of the week, I hit a wall.</p><p>Large scale apps are possible, but you need a different mindset. You have to lean into the architecture. You likely have to ask the agent 100 follow up questions. The more knowledge you bring to this step of the flow, the better an experience you will have. This is your excuse <a href="https://docs.flutter.dev/learn/pathway">to go learn “traditional” development</a>.</p><p>However, the beauty of the “App a Day” mentality is that you don’t always have to scale. Small apps are fast to build, helpful, and you can wake up tomorrow and move to a completely new one.</p><p>This leads to my “AI thought leadership soapbox moment”:</p><blockquote>Right now we’re all empowered to do amazing things alone, but the next frontier is <strong>collaboration</strong>. How we use our AI superpowers to work together in new ways is uncharted territory. So, if you go out and “vibe build” an app with your friends or a team, chart your journey and share it with the rest of us.</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*fCJrAXkiAh4_FNu5I7L_bQ.png" /><figcaption>Dash making a point on his soapbox.</figcaption></figure><h3>My recommended flow</h3><p>I got some questions from colleagues and friends about how I was staying organized. Here’s my flow to building your own app:</p><ol><li>Get organized (<a href="https://docs.google.com/">Google Docs</a>) - I haven’t gone fully AI yet. I need something static, something familiar, a place to park my ideas. I started every app, large or small, with a Google doc. I added the date and my quick notes. This gave me a place to return to as needed.</li><li>Refine my ideas (<a href="https://gemini.google.com/">Gemini</a>) - This step is becoming a classic “AI hack”: don’t write your own prompts; write down your raw thoughts and ask an LLM to create a golden prompt for you.</li><li>Build! (<a href="https://antigravity.google/">Antigravity</a>) - Google’s new AI enabled IDE is a workhorse. By comparison, if you ask any of the popular LLMs (Gemini, ChatGPT, etc.) to “write me a book”, they can only output so much. When you ask Antigravity a complex task like this, first it makes a plan, then it works sequentially through each task in that plan. You guide it along the way. I put all of my golden prompts into Antigravity and guided it to build them into apps.</li><li>Test, iterate, repeat (also <a href="https://antigravity.google/">Antigravity</a>) - After Antigravity finishes your first build, it’s time to get hands on. Run the software. Try it out. Provide your feedback to Antigravity, and ask it to make the changes you need. Don’t know how to run a Flutter app? Just ask the Agent in Antigravity.</li><li>(optional) Deploy (Google Play, <a href="https://firebase.google.com/">Firebase</a> - I’ve already mentioned getting my apps on my phone. Another great avenue for sharing is Firebase. Not sure where to start? Ask Gemini to guide you. Firebase makes hosting your apps and adding more advanced services (like authentication, for example) much easier.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6I979gEcIqfLnPdshiXjRQ.jpeg" /></figure><h3>Breaking out of my internal blog</h3><p>The energy I got from this challenge eventually helped me explode right out of it. Instead of an internal blog, I went and launched my own personal site. Here I’m working outside the artificial bounds of building one small thing a day. Instead, I’m working on things big and small, grabbing ideas as they come, and moving on without hesitation.</p><p>Come find me at <a href="http://ladevzo.com/scrappy-path">ladevzo.com/scrappy-path</a> if you want to see how I’m applying these lessons outside the corporate firewall.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*JLGrYXO8VOHh2Qp1NeHykQ.png" /><figcaption>A screenshot of ladevzo.com. Check it out!</figcaption></figure><h3>Conclusion: find your own flow</h3><p>With that said, let me conclude with this: you don’t need to build 20 apps in 20 days. Start small. Use Gemini for brainstorming. Use Antigravity to build a prototype. Before you get bogged down mastering the code, focus on transitioning from “idea” to “working reality”.</p><p>The tools are ready. Are you?</p><h3>Appendix: list of apps</h3><ol><li>Synonym slider (1 file, 207 LOC) — A simple app to provide the user with a list of synonyms for a given word. Demonstrates basic HTTP integration.</li><li>Sensor app (1 file, 228 LOC) — Interacts with device hardware using the sensors plus package.</li><li>Sino shift (1 file, 230 LOC) — A language experiment to translate English phrases and sentences into a Chinese-language-style ideograph format (Chinese languages use far fewer tokens when interacting with LLMs by virtue of their syntax)</li><li>Vip badge (1 file, 273 LOC) — Implements authentication through Firebase and Google Sign-In.</li><li>My apps widget (4 files, 305 LOC) — An Android homescreen â€œcontainerâ€ to hold all of my apps. Utilizes Android Intents to create a home screen widget.</li><li>Haptic soundboard (2 files, 311 LOC) — A soundboard application featuring audio playback capabilities.</li><li>Rusty-haiku (4 files, 403 LOC) — A simple haiku generator. Demonstrates API usage and state management with Riverpod.</li><li>Thought spot (5 files, 481 LOC) — Place a marker on a map and capture (by voice input) a thought. Features speech-to-text, maps, geolocation, and local databases.</li><li>Jolt (6 files, 494 LOC) — Focuses on local storage with shared preferences and custom UI fonts.</li><li>Accept changes (2 files, 547 LOC) — An attempt to bounce Antigravityâ€™s push notifications to my phone. Provides device feedback via notification and connects to a Realtime Database.</li><li>Street slueth (9 files, 574 LOC) — A spin on Geoguesser: a collaborative murder mystery game where you need to use Google Maps to find clues and solve a puzzle. Map-based application with user authentication and Google Street View integration.</li><li>Learn witt (7 files, 588 LOC) — A learning app for understanding Wittgenstein. Focused on user interface design using custom fonts.</li><li>Parcheesi game (5 files, 625 LOC) — A Parcheesi remake. This was an attempt at â€œonce shot promptingâ€ with Antigrabity. Manages complex logic and state using Riverpod and Equatable.</li><li>Health tracker (6 files, 641 LOC) — Personal health tracking app for monitoring daily blood pressure and alcohol intake. Manages local state and utilizes the file system for storage.</li><li>Magic octo (6 files, 692 LOC) — My take on the magic 8-ball.</li><li>Meeting helper (5 files, 778 LOC) — Productivity tool using Firebase authentication and Cloud Firestore.</li><li>Haircut log (6 files, 901 LOC) — A Google Photos integration that helps hair salons manage user haircut photos leveraging the Google Photos Library API.</li><li>Wwks (6 files, 1121 LOC) — What would Kevin say? My personalized, AI-enabled, chat interface. Combines Google Generative AI with a full Firebase backend.</li><li>Human speed (15 files, 1124 LOC) — A personal thinking tool. Allows you to self-manage context across LLM threads. Full-stack AI application structured with Riverpod, GoRouter, and Firebase.</li><li>Math facts AI(11 files, 1520 LOC) — Educational tool leveraging generative AI to teach math facts.</li><li>Workout buddy (11 files, 1582 LOC) — Workout tracker, featuring Riverpod, Cloud Functions, and Freezed code generation.</li><li>Pulse (14 files, 1928 LOC) — Large-scale project integrating generative AI, robust state management, and code generation.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wJetTyHJ1UDBBdMXq8GfIg.png" /><figcaption>Dash getting fit on the treadmill.</figcaption></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c62ce307c60b" width="1" height="1" alt=""><hr><p><a href="https://blog.flutter.dev/20-apps-in-20-days-with-flutter-and-antigravity-c62ce307c60b">20 apps in 20 days with Flutter and Antigravity</a> was originally published in <a href="https://blog.flutter.dev">Flutter</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Flutter & Dart’s 2026 roadmap]]></title>
            <link>https://blog.flutter.dev/flutter-darts-2026-roadmap-89378f17ebbd?source=rss----4da7dfd21a33---4</link>
            <guid isPermaLink="false">https://medium.com/p/89378f17ebbd</guid>
            <category><![CDATA[android]]></category>
            <category><![CDATA[mobile]]></category>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[apps]]></category>
            <category><![CDATA[ios]]></category>
            <dc:creator><![CDATA[Emma Twersky]]></dc:creator>
            <pubDate>Tue, 24 Feb 2026 23:01:23 GMT</pubDate>
            <atom:updated>2026-02-24T23:01:22.425Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/960/1*Nx4rPo-suELodUsEQqLFdQ.gif" /></figure><p>Transparency is a core goal of the Flutter open source project, and today we’re happy to share our roadmap for the next generation of apps. Our mission remains largely unchanged, we’re still working toward our long-term goal of creating the most popular, fastest growing, and highest-productivity multi-platform UI framework. You can check out the <a href="https://github.com/flutter/flutter/blob/master/docs/roadmap/Roadmap.md"><strong>freshly updated roadmap on GitHub</strong></a> for all the details, and in this post we will cover the themes driving our mission.</p><p>As you dive into our plans for the year, keep in mind that this roadmap is — as it’s always been — our <strong>aspirational</strong> <strong>strategy</strong> for what’s ahead. As with any other roadmap, plans tend to shift and adapt throughout the year, so don’t be surprised if some changes happen along the way. While it primarily reflects the work our teams at Google are focusing on, the truth is that the Flutterverse is now so much bigger than any one company.</p><h3>High-fidelity multiplatform: Impeller, Wasm, and beyond</h3><p>Our driving mission is to continue to deliver the best multiplatform stack by focusing on native-level quality and performance. In 2026, we are completing the migration to the <a href="https://docs.flutter.dev/perf/impeller">Impeller</a> renderer on Android. By finally removing the legacy Skia backend on Android 10 and above, we’re ensuring smooth animations and reducing jank for every user. We continue to see Impeller as the best solution for fast startup and consistent performance.</p><p>On the web, we intend for <a href="https://webassembly.org/">WebAssembly (Wasm)</a> to become the default to deliver native-quality experiences and performance. We are also committed to deep platform integration, ensuring day-zero support for Android 17 and upcoming iOS releases, alongside multi-window support for desktop where our partners at Canonical continue to make progress.</p><h3>GenUI, ephemeral experiences and agentic apps</h3><p>We are fundamentally changing app architecture to enable agentive UIs — interfaces that aren’t just pre-built, but adapt in real-time to user intent. This is powered by the <a href="https://docs.flutter.dev/ai/genui">Flutter GenUI SDK</a> and the <a href="https://a2ui.org/">A2UI protocol</a>, enabling AI models to generate rich experiences dynamically.</p><p>To support this, we are investigating evolving the Dart language by adding support for interpreted bytecode in the Dart runtime. This enables “ephemeral” code delivery, where specific portions of an app can be loaded on demand without requiring a full app store update — a critical technical step for truly agentic apps.</p><h3>Full-stack Dart: Bring your tooling everywhere</h3><p>We are broadening our stack to support the evolution towards full-stack and agentive apps. A major focus is Dart Cloud Functions for Firebase, providing ~10ms cold starts to ensure high-performance backend logic. We are also investigating Dart support for the Google Cloud SDK to enable you to easily connect and build your backend on Google Cloud. Additionally, we are working with the Genkit team on enabling Dart support to help you build sophisticated AI features.</p><h3>AI-reimagined developer experience</h3><p>AI coding agents are disrupting the way apps are built. We’ll continue to collaborate within Google to ensure Dart and Flutter have top-tier support in <a href="https://docs.flutter.dev/ai/create-with-ai#gemini-cli">Gemini CLI</a> and Antigravity, ensuring core workflows like stateful hot reload work seamlessly with AI agents.</p><p>We are also investing in <a href="https://docs.flutter.dev/ai/mcp-server">MCP (Model Context Protocol)</a> servers for Dart tooling, enabling AI agents to perform complex refactors and choose secure, performant libraries with high accuracy by “talking” directly to the Dart analyzer.</p><h3>Sustainable open-source &amp; governance</h3><p>To unlock Flutter’s full potential, we are moving towards an open and sustainable operating model. This includes decoupling the Material and Cupertino design systems into standalone packages to accelerate development and allow them to evolve independently. We are also improving the extensibility of the Flutter Engine so support for new platforms can be authored “out-of-tree.”</p><p>We are deepening our commitment to the ecosystem by formalizing how we collaborate with stakeholders. Central to this is the expansion of our Consultancy Program, Insiders and Google Developer Expert (GDE) network, Customer Advisory Board (CAB), and Partners Advisory Board (PAB), which provide direct feedback to our teams.</p><h3>Modern syntax &amp; compiled performance</h3><p>Dart continues to evolve as a high-performance language. In 2026, we plan to ship Primary Constructors to streamline class declarations and Augmentations to simplify code generation. We will continue to focus on improving build_runner and Dart/Wasm compilation, while refactoring the analyzer to improve performance for large-scale applications.</p><h3>Bringing developers to Flutter and Dart</h3><p>Our recently completed new <a href="https://docs.flutter.dev/learn/pathway">Dart and Flutter learning pathway</a> provides a streamlined, guided onboarding path for new builders. In 2026, we plan to continue our outreach both in-person and across digital platforms to improve the experience for developers and their AI tools.</p><h3>See you at Google Cloud Next &amp; I/O!</h3><p>While this roadmap is our plan for the year, you won’t have to wait long to see the next big things from the team. Mark your calendars for <a href="https://cloud.google.com/next">Google Cloud Next 2026</a> in Las Vegas (April 22–24) and <a href="https://io.google/2026/">Google I/O 2026</a> (May 19–20). These will be the best moments to see Flutter in action next!</p><p>With non-Google contributors now outnumbering those of us employed by Google, there is an incredible amount of exciting work happening that isn’t even captured on this list! Accurate forecasting is always a challenge in an open source project, so please take this as a sincere <strong>statement of our intent</strong> and priorities rather than a fixed guarantee. We are unbelievably excited to keep building the future of apps alongside all of you and can’t wait to see what you’ll build!</p><p><strong>What are you most excited for?</strong> Let us know on socials with the hashtag <strong>#Flutter2026</strong>. And if you’re excited about hearing more from us, be sure to follow us on <a href="https://x.com/flutterdev"><strong>X</strong></a>, check out the repos on <a href="https://github.com/flutter/flutter"><strong>GitHub</strong></a>, and keep an eye on this <strong>blog</strong> for the latest updates. Let’s build the future of apps together! 🚀</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=89378f17ebbd" width="1" height="1" alt=""><hr><p><a href="https://blog.flutter.dev/flutter-darts-2026-roadmap-89378f17ebbd">Flutter &amp; Dart’s 2026 roadmap</a> was originally published in <a href="https://blog.flutter.dev">Flutter</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[What’s new in Flutter 3.41]]></title>
            <link>https://blog.flutter.dev/whats-new-in-flutter-3-41-302ec140e632?source=rss----4da7dfd21a33---4</link>
            <guid isPermaLink="false">https://medium.com/p/302ec140e632</guid>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[release-notes]]></category>
            <category><![CDATA[announcements]]></category>
            <category><![CDATA[flutter-app-development]]></category>
            <category><![CDATA[releases]]></category>
            <dc:creator><![CDATA[Kevin Chisholm]]></dc:creator>
            <pubDate>Wed, 11 Feb 2026 19:01:01 GMT</pubDate>
            <atom:updated>2026-02-18T01:48:14.130Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*XxO20lj9p2xlQfuIiwa8mg.png" /></figure><h4>Empowering the community</h4><p>Today, we’re excited to announce the release of Flutter 3.41, marking a transformative milestone in our journey together! What an exciting time to be a developer; this release represents our commitment to empowering our community in shaping the direction of Flutter. With 868 commits from 145 unique contributors, Flutter 3.41 provides additional transparency and modularity to further improve the experience of contributing to Flutter.</p><p>We are introducing public release windows to make it easier for you to know when changes you contribute would land in a stable release. We are also continuing to decouple our design libraries, which in the long term will help us evolve design systems faster, while also giving you control over which design changes you adopt in your apps. Whether you are pushing the limits of the GPU with new fragment shader improvements or embedding Flutter seamlessly into existing native apps with content-sized views, this release ensures you have the tools to build with confidence and speed.</p><p>There is so much to explore, so let’s dig right in…</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jmKuW7ItWRJAHNABfTEhHA.gif" /></figure><h3>Structural transparency and modularity</h3><h4>Public Release Windows</h4><p>Predictability is key to landing complex features safely. We are introducing public release windows to provide the entire community with the visibility needed to plan ahead. By explicitly calling out branch cutoff dates and release targets publicly, we enable the entire community to have clarity on when their changes would land in future stable releases.</p><p>So what is a branch cutoff date? This date is the deadline for pull requests to land in the default branches (main for Dart and master for Flutter) to guarantee inclusion in the next stable release. If your PR merges before the cutoff, it will ship in the next stable version. If it merges after, it waits for the following cycle.</p><p>For 2026, we plan to release four stable releases (including this one), the dates are as follows:</p><ul><li>Flutter 3.41 — Feb | Branched on 06 January</li><li>Flutter 3.44 — May | Branches on 07 April</li><li>Flutter 3.47 — August | Branches on 07 July</li><li>Flutter 3.50 — November | Branches on 06 October</li></ul><h4>Decoupling for a leaner core</h4><p>We’re continuing our project to migrate the Material and Cupertino libraries to separate packages. This modular approach has several benefits:</p><ul><li><strong>Faster release cycles:</strong> We no longer need to wait for a quarterly SDK release to ship design updates. We can release new Material or Cupertino features and bug fixes the moment they are ready.</li><li><strong>Independent upgrades:</strong> If you’re using an older SDK version due to a project constraint, you can still upgrade your design packages to get the latest look and feel.</li><li><strong>Adaptive design:</strong> Versioned packages allow us to react much faster when iOS or Android introduce drastic design shifts like “Liquid Glass” or “Material 3 Expressive”, ensuring your app never looks out of date.</li></ul><p>Keep an eye on the <a href="https://github.com/flutter/flutter/issues/101479">GitHub issue</a> to follow the progress.</p><h3>Embracing ecosystem standards</h3><p>Part of empowering the community is ensuring Flutter plays nicely with the tools we already rely on.</p><h4>Swift Package Manager and UIScene</h4><p>The transition from CocoaPods to Swift Package Manager continues. We strongly encourage <a href="https://docs.flutter.dev/packages-and-plugins/swift-package-manager/for-plugin-authors">Plugin authors</a> to adopt Swift Package Manager, as it is now the standard for the Apple ecosystem. Additionally, to ensure compatibility with future iOS releases, Flutter now fully supports the <a href="https://github.com/flutter/flutter/pull/178328">UIScene lifecycle by default</a> . This update is critical in meeting Apple’s requirements for upcoming iOS versions. To streamline migration from the deprecated AppDelegate lifecycle logic, check out our <a href="https://docs.flutter.dev/release/breaking-changes/uiscenedelegate">migration guide</a>.</p><h4>Android Grade Plugin (AGP) 9 and Kotlin DSL</h4><p>We continue to align with modern Android standards. With the release of Android Gradle Plugin (AGP) 9, we are working on supporting new strictness requirements and providing guidance on how to navigate them.</p><p><strong>Warning:</strong> <strong>Do not</strong> update your Flutter app for Android to AGP 9 as <strong>migrating plugins to AGP 9 and Flutter apps on AGP 9 using plugins</strong> is not yet supported (<a href="https://github.com/flutter/flutter/issues/181383">#181383)</a>. This support is paused while the Flutter team audits the migration for backwards compatibility with older versions of AGP. This <a href="https://docs.flutter.dev/release/breaking-changes/migrate-to-agp-9">migration doc</a> will be updated as guidance changes.</p><p>Thanks to contributions from community member <a href="https://github.com/bc-lee">Byoungchan Lee (bc-lee@)</a>, new plugin projects now default to using the Kotlin DSL for Gradle.</p><h3>Platform-specific assets</h3><p>Optimizing is now easier thanks to the work of <a href="https://github.com/hm21">Alex Frei (hm21@)</a>. You can now specify which platforms an asset should be bundled for in your pubspec.yaml. This allows optimizations such as, excluding heavy desktop assets from your mobile builds, significantly reducing app size.</p><pre>flutter:<br>  assets:<br>    - path: assets/logo.png<br>    - path: assets/web_worker.js<br>      platforms: [web]<br>    - path: assets/desktop_icon.png<br>      platforms: [windows, linux, macos]</pre><h3>Listening to the community</h3><p>The Flutter team at Google continues to prioritize what matters most to you.</p><h4>The getting started experience</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*baxbpT88lI2jDoF7fQmErQ.png" /></figure><p>For years, the community has called out that while Flutter is delightful and productive, it can be difficult to know where to begin the learning journey.</p><p>We recently launched a completely reimagined <a href="https://blog.flutter.dev/announcing-our-new-dart-and-flutter-getting-started-experience-b8c4b2be0984">Dart and Flutter Getting Started Experience</a>.</p><p>It’s a new learning pathway designed to guide you through the fundamentals of building apps with Flutter and Dart. Let’s take a quick look at some of the changes:</p><ul><li>We’ve introduced a new “quick install” guide that leverages hot-reload on the web, enabling learners to experience the full power of Flutter fast, without setting up a platform-specific environment first. A pathway consisting of written tutorials, low-stakes quizzes, and eight new videos featuring some familiar faces from the Flutter team at Google.</li><li>Learners would finish the learning path having built 4 apps completely from scratch.</li></ul><p>Give the new Getting Started Experience a try in the newly redesigned <a href="https://docs.flutter.dev/learn/pathway">Learn</a> section of our website, powered by <a href="https://jaspr.site/">Jaspr</a>.</p><h4>Fragment shader improvements</h4><p>In Q4 2025, we surveyed developers using the FragmentShader API and asked simply: <em>What is impeding your work?</em> You told us that you needed improved ergonomics when using the API, while also having more flexibility when defining your shaders. In response to that, we made the following changes:</p><ul><li>In 3.41, we added Synchronous Image Decoding. Previously, creating textures for shaders could introduce a frame of lag. With decodeImageFromPixelsSync, you can now generate textures and use them as samplers in the same frame.</li><li>We’ve also added support for High Bitrate Textures (up to 128-bit float), unlocking the ability to use high-resolution lookup tables (LUTs) for GPU-accelerated photo filters and SDFs.</li></ul><pre>void attachTexture(ui.FragmentShader shader) {<br>  ui.PictureRecorder recorder = ui.PictureRecorder();<br>  Canvas canvas = Canvas(recorder);<br>  canvas.drawCircle(const Offset(64, 64), 64, Paint()..color = Colors.red);<br>  ui.Picture picture = recorder.endRecording();<br>  ui.Image image = picture.toImageSync(<br>    128,<br>    128,<br>    targetFormat: ui.TargetPixelFormat.rFloat32,<br>  );<br>  shader.setImageSampler(0, image);<br>}</pre><h4>Widget Previews (Experimental)</h4><p>Based on your early feedback, we are iterating rapidly on Widget Previews. With this release, Widget Previews have improved as follows:</p><ul><li><strong>Flutter Inspector support:</strong> The Widget Preview environment now has access to an embedded Flutter Inspector instance, making it easy to inspect layouts and the state of previewed widgets. <strong>Important note:</strong> it might be necessary to configure additional package directories to see widgets from your project by default. To do this, open the Flutter Inspector settings by clicking the gear icon and add a new package directory pointing to your project.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*FyWSKI69_GcAv7MoAbPbww.gif" /></figure><ul><li><strong>Support for applications with </strong><strong>dart:ffi dependencies:</strong> Previously, previews that included widgets with transitive dependencies on libraries importing dart:ffi would cause compilation errors and prevent the preview environment from updating. This occurred because dart:ffi isn’t supported on web platforms (<a href="https://github.com/flutter/flutter/issues/166431">flutter/flutter#166431</a>). The widget previewer can now handle previews that have dependencies on platform-specific libraries, including dart:ffi and dart:io. <strong>Important note</strong>: invoking APIs from these libraries isn’t supported in the widget previewer and will result in an error being displayed for previews calling these platform-specific APIs. See the <a href="https://dart.dev/tools/pub/create-packages#conditionally-importing-and-exporting-library-files">Dart documentation on conditional imports</a> for examples of how to write code that’s compatible with both native and web platforms.</li></ul><h3>Framework fidelity and polish</h3><p>We continue to refine the present experience with a focus on platform fidelity and developer efficiency.</p><h4>iOS polish</h4><p>In Flutter 3.41 we’ve made visual improvements with the new “bounded blur” style. Previously, translucent widgets using the BackdropFilter could suffer from color bleeding at the edges. Thanks to improvements in the Impeller rendering engine, we have eliminated this artifact.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*YQySx5fHQJ9zs7_EI_Y4_g.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tM9ItzXJAm4nN_OcyxzLCw.png" /></figure><p>We’ve also added support for native styled drag handling for CupertinoSheet through the showDragHandle property.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/824/1*ocj9sgfhhYAYFlVIqPxZmA.png" /></figure><h4>Add-to-App</h4><p>Adding Flutter views to existing Android and iOS apps is now easier! Flutter views embedded in existing native apps can now automatically resize themselves based on their content. Previously, a Flutter view needed a fixed size provided by its native parent. This made some scenarios difficult, like adding Flutter views to a native scrollable view.</p><p>To use this, your root widget must support unbounded constraints. Avoid using widgets that require a pre-defined size (like ListView or LayoutBuilder) at the top of your tree, as they will conflict with the dynamic sizing logic.</p><p>To enable this behavior on iOS, <a href="https://docs.flutter.dev/add-to-app/ios/add-flutter-screen#content-sized-views">set</a><a href="https://docs.flutter.dev/add-to-app/ios/add-flutter-screen#content-sized-views">FlutterViewController.isAutoResizable to true</a>. For Android, enable content sizing in your Android Manifest and <a href="https://docs.flutter.dev/add-to-app/android/add-flutter-view#content-sized-views">set the width or height of your FlutterView to content_wrap.</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*BU1kKyxkWidSLXOA37nPLg.gif" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*46fO6mit5AFOq9ZY7YtRmA.gif" /></figure><h4>Navigation and scrolling</h4><p>We’ve worked hard to smooth out the rough edges in core interaction models through the following changes:</p><ul><li>We’ve introduced Navigator.popUntilWithResult, allowing you to pop multiple screens and pass a value back to the destination route in a single call, drastically simplifying state management in multi-step flows.</li><li>We reimplemented StretchingOverscrollIndicator using a simulation-based approach ported from Android 12. This ensures a more natural and fluid overscroll effect that responds correctly to high-velocity flings.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/538/1*klfeLTPZihrgBRUmUzWaIA.gif" /></figure><ul><li>We fixed an issue with pinned headers in NestedScrollView and SliverMainAxisGroup, ensuring headers correctly overlap subsequent slivers.</li></ul><h3>Accessibility</h3><p>Helping you build accessible experiences that reach users on any screen is at the heart of our mission. In this update, we’ve added the following:</p><ul><li>Native accessibility support for CircularProgressIndicator and LinearProgressIndicator, allowing assistive technologies to announce progress updates.</li><li>Flutter now respects web users’ text spacing overrides to improve the reading experience.</li><li>We’ve introduced new matchers like isSemantics and accessibilityAnnouncement in flutter_test to make validating accessibility easier.</li></ul><h3>Material and animation</h3><p>We have introduced new primitives and properties to expand control over animations and layout. Thanks to the work of community member <a href="https://github.com/bernaferrari">Bernardo Ferrari (bernaferrari@)</a>, RepeatingAnimationBuilder introduces a declarative way to create continuous animations like a loading indicator, a pulsing button, or a shimmering placeholder effect.</p><p>For example, here’s how you can make a square slide back-and-forth:</p><pre>RepeatingAnimationBuilder&lt;Offset&gt;(<br>  animatable: Tween&lt;Offset&gt;(<br>    begin: const Offset(-1.0, 0.0), <br>    end: const Offset(1.0, 0.0),<br>  ),<br>  duration: const Duration(seconds: 1),<br>  repeatMode: RepeatMode.reverse,<br>  curve: Curves.easeInOut,<br>  builder: (BuildContext context, Offset offset, Widget child) {<br>    return FractionalTranslation(<br>      translation: offset,<br>      child: child,<br>    );<br>  },<br>  child: const ColoredBox(<br>    color: Colors.green,<br>    child: SizedBox.square(dimension: 100),<br>  ),<br>),</pre><p>We also updated CarouselView with a .builder constructor, making it easier to create carousels with dynamic content. DropdownMenuFormField now supports a custom errorBuilder, and RawAutoComplete now includes an OptionsViewOpenDirection.mostSpace option to intelligently position options based on available screen space.</p><h3>Community-led evolution</h3><p>One of the strongest examples of Flutter open source partnerships is our longstanding relationship with Canonical. Their team continues to drive the Flutter Desktop roadmap forward, delivering critical features that benefit the entire ecosystem.</p><p>Thanks to Canonical’s engineering leadership, we are closing the gap on complex desktop UI requirements. This release introduces experimental APIs for creating popup windows and tooltip windows, along with cross-platform support for dialog windows on Linux, macOS, and Windows. Finally, new APIs were added to let you test multi-window apps. If you’d like a sneak peek of these upcoming windowing APIs, check out Flutter’s <a href="https://github.com/flutter/flutter/tree/master/examples/multiple_windows">multiple_windows example app</a>!</p><p>Flutter Linux now also enables merged threads by default, simplifying the threading model and improving performance while also working to improve Windows stability. We intend to remove the merged threads opt-out in a future release. If you have any issues with merged threads, please <a href="https://github.com/flutter/flutter/issues/150525">let us know</a>.</p><h3>DevTools</h3><p>Devtools has seen improvements in performance and stability:</p><ul><li>Flutter’s DevTools are compiled using dart2wasm, resulting in performance improvements. You can still opt out and revert to the dart2js-compiled DevTools by using the settings dialog.</li><li>Dropped connections to the Dart Tooling Daemon (DTD) are now automatically retried to improve the experience when your machine resumes after sleeping.</li></ul><p>These are just a couple highlights from this release. To learn about all the updates included in Flutter 3.41, check out the release notes for DevTools <a href="https://docs.flutter.dev/tools/devtools/release-notes/release-notes-2.52.0">2.52.0</a>, <a href="https://docs.flutter.dev/tools/devtools/release-notes/release-notes-2.53.0">2.53.0</a>, and <a href="https://docs.flutter.dev/tools/devtools/release-notes/release-notes-2.54.0">2.54.0</a>.</p><h3>Next Stop: flutter upgrade</h3><p>Flutter 3.41 is a step toward improving our open source contributing experience, while also improving Flutter’s foundational feature to enhance your development experience whether you are migrating a plugin to Swift Package Manager, optimizing assets for specific platforms, or pushing pixels with new Shader APIs. We are grateful for the amazing community we’ve built together.</p><p>For a comprehensive list of all the changes, be sure to check out the detailed <a href="https://docs.flutter.dev/release/breaking-changes">breaking changes</a> and <a href="https://docs.flutter.dev/release/release-notes/release-notes-3.41.0">release notes</a>. To try out the new features in Flutter 3.41, all it takes is a flutter upgrade!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=302ec140e632" width="1" height="1" alt=""><hr><p><a href="https://blog.flutter.dev/whats-new-in-flutter-3-41-302ec140e632">What’s new in Flutter 3.41</a> was originally published in <a href="https://blog.flutter.dev">Flutter</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Announcing our new Dart and Flutter Getting Started experience]]></title>
            <link>https://blog.flutter.dev/announcing-our-new-dart-and-flutter-getting-started-experience-b8c4b2be0984?source=rss----4da7dfd21a33---4</link>
            <guid isPermaLink="false">https://medium.com/p/b8c4b2be0984</guid>
            <category><![CDATA[announcements]]></category>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[getting-started]]></category>
            <category><![CDATA[flutter-app-development]]></category>
            <category><![CDATA[dart-programming-language]]></category>
            <dc:creator><![CDATA[Eric Windmill]]></dc:creator>
            <pubDate>Tue, 03 Feb 2026 17:01:03 GMT</pubDate>
            <atom:updated>2026-02-03T17:01:02.959Z</atom:updated>
            <content:encoded><![CDATA[<p>When I joined the Dash DevRel team, my manager gave me an onboarding doc which started like this: “Your new job in one sentence: Improve the lives of Dart and Flutter developers.”</p><p>In time, I’ve come to understand the definition of ‘Dart and Flutter developers’ to include those who don’t yet even call themselves Dart and Flutter developers; they’re just Flutter-curious.</p><p>Today, we’ve landed something that we think improves the lives of those future Flutter developers: the <a href="http://docs.flutter.dev/learn/pathway">Dart and Flutter Getting Started experience</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/862/1*rHBScksI6g6at1HsqSuPhA.png" /></figure><h3>What we built</h3><p>The Getting Started experience is a multi-disciplinary learning pathway for programmers who don’t yet know anything about Dart or Flutter. It spans both the Dart and Flutter websites, and combines written tutorials, video series, quizzes, and documentation to take you from setting up Flutter to building a handful of apps designed to teach the fundamentals.</p><h4>A quick install guide for those who just want to try Flutter out.</h4><p>Since the release of hot reload on the web, Flutter learners can have the full Flutter experience without having to download platform-specific development environments until they need them. We wrote <a href="http://docs.flutter.dev/learn/learn/pathway/quick-install">a new quick install guide</a> to reduce the friction of <em>trying </em>Flutter. We don’t want it to feel like a commitment before you even start!</p><h4>Two full tutorials: one for Dart, one for Flutter.</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8VqmXOFJbmKgq41H5VzzoQ.png" /></figure><p>The <a href="http://dart.dev/learn">Dart tutorial</a> was designed to lead into the Flutter tutorial, but they aren’t dependent on one another. If you’re already confident using a different modern, object-oriented language, you’re free to jump straight into the Flutter tutorial.</p><h4>Four apps that you’ll build from scratch.</h4><p>Of all the design questions we asked ourselves, we spent the most time thinking about what the reader will actually build. Will it be one giant app, several discreet cookbook recipe-like pieces of Flutter code, or something in between?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*OqwtegPVcDWjkuE4Xw8BMQ.png" /></figure><p>Ultimately, we came to the conclusion that smaller apps provide a better experience for new learners for a few reasons:</p><ul><li>With larger apps, there’s more room for things to go wrong, which can cause a new learner to become frustrated.</li><li>The larger the app, there’s more required code that isn’t actually pertinent to what the tutorial is trying to teach.</li><li>We didn’t want to ask the user to clone a repository with 25 projects with names like flutter_tutorial_step_1. Then you have to bring git and terminal commands into the picture, you have to ask the reader to copy the commands that work their operating system, and so on. It’s just a bunch of unnecessary cruft that gets in the way of <em>learning.</em></li></ul><p>At the same time, the apps need to be more than single-feature apps, else we’ll fail to connect the dots of a feature to the bigger picture.</p><h4>Eight videos accompanying major topics.</h4><p>The videos in the Getting Started experience were written to provide the most crucial <em>context</em>, so the reader would understand what they were doing when they got to the hands-on-coding part.</p><p>Including these videos is important to me on a personal level too. Many years ago when I was learning Flutter, I felt in awe of the early DevRel team. They cared deeply about teaching Flutter, and they were so genuine and supportive that I wanted to be part of whatever it was they were doing. Since this learning pathway is often going to be the first thing a new Flutter developer interacts with, I wanted to honor that feeling and make Flutter-curious developers feel excited and welcomed to join the community.</p><p>To that end, we use the videos as a way to teach Flutter, but also to introduce a handful of the real-life humans that work to make the Flutter and Dart better everyday — engineers, tech writers, and product managers are all featured.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*r-HMeY-tNkR80DbyIzOFTg.png" /></figure><h4>Small quizzes throughout to confirm what you’ve learned.</h4><p>We added simple quizzes at the end of each tutorial page. They’re low-stakes and non-blocking. They exist only to give you a bit of feedback and confidence. If you don’t like ’em, skip ‘em!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Ina6wQU6mBfspHKrfB3VHw.png" /></figure><h4>The existing How Flutter Works YouTube series as a conclusion.</h4><p>We cap the learning tutorial off with Craig Labenz’s fantastic video series, released a few months ago, called ‘How Flutter Works’. This series teaches you the inner workings of Flutter with just enough depth that it’s still approachable, yet upgrades your ability to write Flutter apps. This is must-learn knowledge on the way to becoming an advanced Flutter developer.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*gyhT6-IMAj4pb1-wNGPxaQ.png" /></figure><h3>Website updates</h3><p>This tutorial is shipping alongside several updates to the Dart and Flutter websites. You may know that we’ve been migrating our website infrastructure from JavaScript-based static site generators (SSGs) to <a href="https://jaspr.site/">Jaspr</a>, a Dart SSG. The timing of that migration isn’t random! We knew we wanted to do it, and it seemed like the right thing to do before we started work on the considerable updates to the website we made for the Getting Started tutorials.</p><p>As a reader, the most noticeable update is the separation of the main docs articles and the <a href="http://docs.flutter.dev/learn">Learn</a> section of the website. The learn section of the site is reached by clicking on the Learn button in the site’s header navigation, as seen in this screenshot:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BM-6gIW7qi51ojLzOQWFBw.png" /></figure><p>The Learn section is where we’ll organize all existing and future tutorial-style documentation and articles, in order to keep the main docs easier to navigate. In the header navigation the main docs can be reached with the “User Guides” button (or by clicking the site title).</p><h3>Try it out</h3><p>The learning pathway is live at <a href="https://docs.flutter.dev/learn/pathway">docs.flutter.dev/learn/pathway</a>. If you go through it — or even just part of it — please fill out the feedback survey linked on that page. We’re listening, and we’re already thinking about what comes next.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b8c4b2be0984" width="1" height="1" alt=""><hr><p><a href="https://blog.flutter.dev/announcing-our-new-dart-and-flutter-getting-started-experience-b8c4b2be0984">Announcing our new Dart and Flutter Getting Started experience</a> was originally published in <a href="https://blog.flutter.dev">Flutter</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Jaime’s build context: Prompt engineering as infrastructure]]></title>
            <link>https://blog.flutter.dev/jaimes-build-context-prompt-engineering-as-infrastructure-b335fd517101?source=rss----4da7dfd21a33---4</link>
            <guid isPermaLink="false">https://medium.com/p/b335fd517101</guid>
            <category><![CDATA[agentic-ai]]></category>
            <category><![CDATA[dartlang]]></category>
            <category><![CDATA[flutter]]></category>
            <category><![CDATA[agent-skills]]></category>
            <dc:creator><![CDATA[Jaime Wren]]></dc:creator>
            <pubDate>Fri, 23 Jan 2026 00:33:00 GMT</pubDate>
            <atom:updated>2026-01-23T00:32:58.901Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HNqQFQ2hdhAgjew1pIMqXA.png" /></figure><h3>Summary</h3><p>In the era of agentic AI, the bottleneck for scaling projects has shifted from code volume to code integrity. To move at the speed AI allows without introducing systemic friction, we must stop treating AI as a magic wand and start treating it as a high-performance engine that requires a perfectly calibrated track.</p><ul><li>Close the gap: Engineering teams are splitting — traditionalists on one end and high-velocity agentic power users on the other. For production apps, your infrastructure must connect both, creating a shared space where traditional rigor and agentic speed don’t just coexist, but actively harden each other.</li><li>Lean into reproducible systems: An agent is only as good as its feedback loop. If your tests aren’t reproducible and your CI lacks a high-signal feedback loop, your agents are flying blind.</li><li>Prompts as infrastructure: Stop treating your best AI instructions as ephemeral chat one-offs that disappear when a session ends. Instead, move these automated workflow instructions into a version-controlled file, transforming your individual tribal knowledge into executable documentation that ensures every team member can trigger the same high-integrity results reliably across the project.</li><li>Shift to Skill-based architecture: Success means graduating your proven workflows into shared Skills. By moving from individual prompts to project-wide Skills, you provide your entire team with a standard, high-integrity playbook that agents can execute automatically.</li></ul><p>Recently, I’ve been reflecting on what it truly means to scale an open-source project for a new wave of contributors. We are moving into an era where agentic AI can generate code so rapidly that sheer volume is no longer the bottleneck; instead, the real challenge is ensuring this influx doesn’t compromise our codebases, or our shared values as teammates. Many teams are splitting into a dumbbell shape: traditional manual coding on one end and high-velocity agentic power-users on the other.</p><p>For large apps, our infrastructure must serve as the handle that connects these two ends of the spectrum, creating a shared space where traditional rigor and agentic speed don’t just coexist, but actively harden each other. To scale effectively, we must lean into the basics by anchoring our workflows in the fundamentals of reproducible software development. To move at the speed these tools allow without drowning in technical debt or unreadable codebases, our environments must provide a definitive, high-signal feedback loop.</p><p>In this agentic context, source code health is measured strictly by passing tests, deterministic coverage metrics, and clean analysis. If these fundamentals are missing, it’s like asking a high-performance engine to drive at breakneck speed through the dark. It is perfectly reasonable — and often responsible — to feel the need to push back against these new tools if the environment isn’t ready for them.</p><p>The goal here isn’t to force a tool onto a project for the sake of speed; it’s to build the digital sensors that allow us to adopt that new velocity safely. More importantly, this transition is about bringing our teammates along for the ride. Infrastructure shouldn’t be a barrier that separates the “AI power users” from the rest of the team; it should be the common ground where we all feel confident. Being a good teammate in the agentic era means ensuring that though our repositories might move faster, our culture remains supportive. We build these systems so that everyone can move with confidence, ensuring that “agentic speed” is a win for the whole team, not just a new risk for an existing functioning software product.</p><p>However, these digital sensors are only as reliable as the environment in which they live. This is why we must anchor our trust in our CI systems. In a truly reproducible workflow, the CI is the only version of reality that matters; it is the final arbiter for an agent that lacks human intuition. If a change doesn’t pass the automated gates, it effectively doesn’t exist. By treating the CI as a high-signal feedback loop, we remove the human bottleneck of manual verification and replace it with a reproducible gate. This absolute source of truth allows us to scale more responsibly — enabling agents to fail fast, iterate, and ultimately succeed without compromising the integrity of the project or the peace of mind of the team.</p><h3>The ask</h3><p>A one-off prompting success is just a fluke. True scale comes from creating a flywheel: every time you or a teammate returns to the repository, the agent should be more capable than it was the last time because knowledge debt has been paid forward into a shared repository of prompts. You are building a shared institutional memory that isn’t trapped in a single developer’s head.</p><p>To make this repeatable for any developer on your team, you need a library of prompt instructions that acts as executable documentation. While many teams rush to create global “config” and “rules” files, I find these often lead to inconsistent results — an agent might “forget” a rule or misapply it to the wrong context. As scientifically minded engineers, we should prefer to remove variables. By controlling the exact prompting for a specific task, you ensure the agent has exactly what it needs for that particular task within your repository. Doing so in an intentional manner in a project is what helps both individuals and teams build genuine confidence in these new tools.</p><h3>Enter Agent Skills</h3><p>In late 2025, Anthropic introduced <em>Agent Skills</em> — an open standard designed to provide AI agents with specialized, modular expertise. Rather than just generic tools, Skills package instructions and resources together to ensure complex tasks are performed consistently. This is moving fast; as of early 2026, many tools are already adding support for this standard to enable cross-platform portability.</p><ul><li>Flexibility: You can use Skills with many agents, including Antigravity, Cursor, Claude Code Gemini CLI and VS Code, because they are an <a href="https://agentskills.io/home">open standard</a>.</li><li>Shared knowledge: Skills can be easily shared with collaborators, or saved into a user folder for use across projects.</li><li>Repeatable workflows: Skills ensure that agents consistently perform complex, multi-step tasks by instructing them with clear procedural steps.</li><li>Additional resources: Skills can include scripts, templates, or other data alongside instructions.</li><li>Just-in-time access: When Skills are first loaded, only the metadata is loaded into the agent’s context. This means that the specific instructions are only added to the context when needed, which saves tokens.</li><li>Maintain code quality: The construction of these can be used as a set of tools to help contributors have the right context to put together higher quality PRs, tests, and documentation following your best practices.</li></ul><h3>Documentation for current major tools that support Skills</h3><p>See documentation for your tool to see where to add these files.</p><ul><li>Antigravity — <a href="https://antigravity.google/docs/skills">https://antigravity.google/docs/skills</a></li><li>Cursor — <a href="https://cursor.com/docs/context/skills">https://cursor.com/docs/context/skills</a></li><li>Claude Code- <a href="https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview">https://platform.claude.com/docs/en/agents-and-tools/agent-skills/overview</a></li><li>Gemini CLI — <a href="https://geminicli.com/docs/cli/skills/">https://geminicli.com/docs/cli/skills/</a></li><li>VS Code — <a href="https://code.visualstudio.com/docs/copilot/customization/agent-skills">https://code.visualstudio.com/docs/copilot/customization/agent-skills</a></li></ul><h3>The anatomy of an effective Skill</h3><p>To ensure your Skills library remains a “Runbook for Robots” rather than just a list of suggestions, every prompt in this collection follows a strict set of best practices:</p><ul><li>Known good state: Before an agent touches a line of code, it must verify that the existing tests pass and the analyzer is clean. If the foundation is cracked, the agent fixes the foundation before building on top of it.</li><li>Actionable verification: Anchor instructions in commands like flutter test --coverage or dart fix --apply to provide the agent with the deterministic feedback it needs to self-correct.</li><li>Finite scoping: To ensure that the agent maintains high context and focus, prompts are designed with clear boundaries — targeting specific functions, files, or coverage gaps. This ensures that the agent remains focused on a single goal, preventing scope creep and ensuring the output is easy to review.</li><li>The report &amp; review loop: The agent’s job ends with a structured summary, not a commit. By requiring the agent to explain its changes and provide a suggested commit message without actually pushing code, we keep the human engineer in the role of the final decision maker.</li></ul><h3>Example Skill: Prepare current work for PR</h3><pre>---<br>name: pr-prep<br>description: Prepare current work for PR<br>---<br>## Prepare current work for PR: Verify Tests Passing and Cleanup<br><br>**Objective:** Verify the current test suite status with `flutter test`, clean up any temporary modifications, and harden test coverage for active files.<br><br>**Instructions:**<br>1.  **Baseline:**<br>    *   Run `dart fix --apply` to apply automated fixes.<br>    *   Run `flutter analyze` to ensure no analysis issues.<br>    *   Run `flutter test` to establish the current passing state.<br>    *   Run `flutter test integration_test/app_test.dart` to verify integration integrity.<br>2.  **Fix Failures:** If there are any test failures or analysis errors, investigate and resolve them. Prioritize fixing code over deleting tests.<br>3.  **Cleanup:** Review any currently modified files (run `git status` or check the diff). Remove any:<br>    *   `print` / `debugPrint` statements.<br>    *   Unused imports.<br>    *   Commented-out code blocks.<br>    *   Temporary &quot;hack&quot; fixes that should be replaced with proper solutions.<br>4.  **Verify &amp; Expand:**<br>    *   For the files you touched or cleaned up, check if there are obvious edge cases missing from their unit tests. Add tests to cover these cases.<br>    *   Run `flutter analyze` again to ensure clean code.<br>    *   Run `flutter test` again to ensure cleanup didn&#39;t break anything.<br>    *   Repeat this step as necessary.<br>5.  **Report &amp; Review:**<br>    *   Summarize the cleanup status (e.g., &quot;Tests passing, removed 3 debug prints&quot;).<br>    *   **Action:** Ask the user to review the changes closely to ensure no intended code was accidentally removed.<br>    *   **Do not commit or push.**<br>    *   Provide a suggested Git commit message (e.g., &quot;Prepare for PR: Fix tests and remove debug code&quot;).</pre><h3>Example Skill: Single file test coverage</h3><pre>---<br>name: single-file-test-coverage<br>description: Write a new test or modify an existing test<br>---<br>## Single File Test Coverage Improvement<br><br>**Objective:** Write a new single test file, or modify an existing file, to improve coverage for a specific target class.<br><br>**Instructions:**<br>1.  **Identify Target:** Choose a single source file (Dart) in `lib/` that has low or no test coverage and is suitable for unit testing (e.g., utility classes, logic helpers).<br>3.  **Establish Baseline:**<br>    *   Run `flutter analyze` to ensure validity.<br>    *   Run `flutter test` to ensure the project is stable.<br>    *   Run `flutter test --coverage` and check `coverage/lcov.info`.<br>4.  **Implement/Update Test:** Create a new test file in `test/` or update the existing one. Focus on:<br>    *   Edge cases (null inputs, empty strings, boundary values).<br>    *   Branch coverage (ensure if/else paths are exercised).<br>    *   Mocking dependencies where necessary (using `mockito` or `mocktail`).<br>5.  **Verify &amp; Iterate:**<br>    *   Run the tests to ensure they pass.<br>    *   Run `flutter analyze` to ensure no regressions.<br>    *   If coverage is still low, **iterate a few times**: analyze missed lines/branches and add targeted test cases.<br>5.  **Report &amp; Review:**<br>    *   Summarize what was fixed/covered and report coverage progress (e.g., `X% -&gt; Y%` for `&lt;filename&gt;`).<br>    *   **Action:** Ask the user to review the new tests closely.<br>    *   **Do not commit or push.**<br>    *   Provide a suggested Git commit message (e.g., &quot;Improve test coverage for [Class Name]&quot;).</pre><h3>Example Skill: Migrate to modern Dart features</h3><pre>---<br>name: migrate-to-modern-dart-features<br>description: Migrate to modern Dart features (Dart 3+)<br>---<br>## Migrate to Modern Dart Features<br><br>**Objective:** Optimize consistency and conciseness by migrating to modern Dart features (Dart 3+).<br><br>**Candidates for Migration:**<br>*   `if-else` chains -&gt; `switch` expressions.<br>*   Data classes with manual `==`/`hashCode` -&gt; `Records` or `equatable` (or class modifiers).<br>*   Null checks -&gt; pattern matching.<br><br>**Instructions:**<br>1.  **Baseline:** Run `flutter test` and `flutter analyze`.<br>2.  **Select Target:** Identify a *single* migration opportunity.<br>3.  **Constraint:** Keep the change extremely small (**max 50 lines**).<br>4.  **Migrate:** Refactor to use the new feature.<br>5.  **Verify:**<br>    *   Run `flutter analyze`.<br>    *   Run `flutter test` to ensure no regressions.<br>6.  **Report &amp; Review:**<br>    *   Summarize the migration.<br>    *   **Action:** Ask the user to review the changes closely.<br>    *   **Test Location:** Explicitly state where in the app the user should go to manually test the change (e.g., &quot;Click the bottom button after the app opens&quot;).<br>    *   **Do not commit or push.**<br>    *   Provide a suggested Git commit message (e.g., &quot;Refactor: Use switch expression in [Class Name]&quot;).</pre><h3>In summary</h3><p>The long game of the agentic era isn’t about the volume of code you produce today; it’s about responsibly architecting the infrastructure and cultural expectations for the repositories of tomorrow. By building the handle of the dumbbell, ensuring that as our tools move faster, they remain anchored to our shared values and technical rigor.</p><p>In the very near future, agents will move from reactive assistants to proactive contributors — checking in on your repository and resolving issues while you sleep. By hardening your high-signal feedback loops and documenting your workflows in a version-controlled suite of Skills, you are doing more than just saving time; you are training the agents of the future to respect your specific architecture, your vision, and your standards. Most importantly, you are ensuring that as the engine of development accelerates, your entire team has the digital sensors and shared knowledge to move forward with collective confidence and a stronger, more resilient engineering culture.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b335fd517101" width="1" height="1" alt=""><hr><p><a href="https://blog.flutter.dev/jaimes-build-context-prompt-engineering-as-infrastructure-b335fd517101">Jaime’s build context: Prompt engineering as infrastructure</a> was originally published in <a href="https://blog.flutter.dev">Flutter</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The Top Ten Highlights from Flutter & Dart in 2025]]></title>
            <link>https://blog.flutter.dev/the-top-ten-highlights-from-flutter-dart-in-2025-a809c8325309?source=rss----4da7dfd21a33---4</link>
            <guid isPermaLink="false">https://medium.com/p/a809c8325309</guid>
            <category><![CDATA[flutter-app-development]]></category>
            <category><![CDATA[flutter-ui]]></category>
            <category><![CDATA[flutter-widget]]></category>
            <category><![CDATA[flutter]]></category>
            <dc:creator><![CDATA[Emma Twersky]]></dc:creator>
            <pubDate>Wed, 17 Dec 2025 20:54:40 GMT</pubDate>
            <atom:updated>2025-12-19T16:50:35.305Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*38nWNBqHADyCszyyX-h98Q.png" /></figure><p>Hi, Flutter community! My name is Emma Twersky, and I’m back with monthly updates from the Flutterverse. I’m so thankful for the warm welcome, and excited to be a part of this community.</p><p>This post is a bit of a two-for-one: we’re diving into hot new content from today’s livestream, “<a href="https://www.youtube.com/watch?v=pGN8kq7QDgg">Flutter Flight Plans</a>,” helping you take flight on some of our most requested topics. Then we’ll take a moment to reflect on what a truly landmark year 2025 has been. We’re all-in on making Dart &amp; Flutter the best way to build amazing multi-platform apps, and we’re excited to show you what’s new and what’s next.</p><h3>10 Highlights from Flutter &amp; Dart in 2025</h3><p>What a year! Let’s dig into just 10 of the top moments, although it was hard narrowing it down…</p><p>As you might know, Dart and Flutter ship quarterly updates. In 2025, we shipped eight packed stable releases:</p><p>1. <a href="https://blog.flutter.dev/whats-new-in-flutter-3-29-f90c380c2317"><strong>Flutter 3.29</strong></a><strong> &amp; </strong><a href="https://blog.dart.dev/announcing-dart-3-7-bf864a1b195c"><strong>Dart 3.7</strong></a><strong> (Feb 2025):</strong> This release was all about performance and fidelity, with big Impeller updates, the move of Dart execution to the main thread on mobile to improve native interop, and a new Dart formatter.</p><p>2. <a href="https://blog.flutter.dev/whats-new-in-flutter-3-32-40c1086bab6e"><strong>Flutter 3.32</strong></a><strong> &amp; </strong><a href="https://blog.dart.dev/announcing-dart-3-8-724eaaec9f47"><strong>Dart 3.8</strong></a><strong> (May 2025</strong><a href="https://blog.flutter.dev/whats-new-in-flutter-3-32-40c1086bab6e"><strong>)</strong></a><strong>:</strong> We got experimental web hot reload, Cupertino “Squircles,” stylus support on Android, cross-compilation for Dart, and null-aware elements.</p><p>3. <a href="https://blog.flutter.dev/whats-new-in-flutter-3-35-c58ef72e3766"><strong>Flutter 3.35</strong></a><strong> &amp; </strong><a href="https://blog.dart.dev/announcing-dart-3-9-ba49e8f38298"><strong>Dart 3.9</strong></a><strong> (Aug 2025):</strong> Web hot reload became default, we launched experimental Widget Previews, introduced the Dart &amp; Flutter <a href="https://docs.flutter.dev/ai/mcp-server">MCP server</a>, and announced the Material/Cupertino decoupling.</p><p>4. <a href="https://medium.com/r?url=https%3A%2F%2Fblog.flutter.dev%2Fwhats-new-in-flutter-3-38-3f7b258f7228"><strong>Flutter 3.38</strong></a><strong> &amp; </strong><a href="https://blog.dart.dev/announcing-dart-3-10-ea8b952b6088"><strong>Dart 3.10</strong></a><strong> (Nov 2025):</strong> Dart added dot shorthands, web tooling improved, and Widget Previews got IDE integration! Plus, crucial iOS 26/Xcode 26 support and the UIScene migration path.</p><p>5. We laid out our vision early in the year, sharing our <a href="https://blog.flutter.dev/flutter-2025-roadmap-f127882b117f"><strong>Flutter 2025 Roadmap Update</strong></a> and it’s exciting to see how much has been delivered and the continued focus on multi-platform excellence and AI integration.</p><p>… and since many of you have been asking, yes, we plan to be back in early 2026 with a similar annual post as we continue to adjust our roadmap based on your feedback. Our goal is ultimately to continue building the best cross-platform framework with the best developer experience and feature set.</p><p>6. Speaking of you… <strong>the Flutter community and ecosystem are thriving!</strong> At <a href="https://blog.flutter.dev/dart-flutter-momentum-at-google-i-o-2025-4863aa4f84a4">Google I/O</a>, we shared that <strong>nearly 30% of new free iOS apps are built with Flutter</strong>.</p><p>We’re constantly amazed by what you’re building. In 2025, we worked with some amazing companies to showcase how they’re building and betting on Flutter and Dart in big ways, including NotebookLM, teamLab, Agape, Universal Destinations &amp; Experiences, Reflection.app, and GE Appliances.</p><p>Some highlights from this year include:</p><p><strong>talabat</strong> is MENA’s leading on demand delivery platform. With millions of daily users, talabat uses Flutter to connects millions of customers to food, groceries, and more across 8 countries.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FA3ApoV_QRio%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DA3ApoV_QRio&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FA3ApoV_QRio%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/91e7e38b88bf406077c2558dc0e98ef6/href">https://medium.com/media/91e7e38b88bf406077c2558dc0e98ef6/href</a></iframe><p><strong>Google’s NotebookLM</strong> used Flutter to meet explosive user demand, delivering a delightful 4.8-star mobile experience in under 7 months.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FpMoUg3dkDJk%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DpMoUg3dkDJk&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FpMoUg3dkDJk%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/439f1c3f43a16dbff82b41c09b34ffa5/href">https://medium.com/media/439f1c3f43a16dbff82b41c09b34ffa5/href</a></iframe><p><strong>teamLab</strong> uses Flutter in art and digital solutions, extending experiences to over 35 million people.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FOyS812ZoTzw%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DOyS812ZoTzw&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FOyS812ZoTzw%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/ef5905e1d483a328647ab9a37af4db72/href">https://medium.com/media/ef5905e1d483a328647ab9a37af4db72/href</a></iframe><p>Flutter is woven into <strong>Agapé Wellness’s</strong> mission to help people feel close, even when apart.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FH9njcR0fjO0%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DH9njcR0fjO0&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FH9njcR0fjO0%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/61e9ed2a8076f9ef24bbb133a751af25/href">https://medium.com/media/61e9ed2a8076f9ef24bbb133a751af25/href</a></iframe><p>7. As we continue growing, it’s important to understand <strong>How Flutter Works. </strong>So, we made <a href="https://www.youtube.com/watch?v=0Xn1QhNtPkQ&amp;list=PLjxrf2q8roU1nbstACpBBSwHa-BuOILlM">a whole series on that</a>.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F0Xn1QhNtPkQ%3Flist%3DPLjxrf2q8roU1nbstACpBBSwHa-BuOILlM&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D0Xn1QhNtPkQ&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F0Xn1QhNtPkQ%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/5de47b554dba5dff6b661726cd9fd475/href">https://medium.com/media/5de47b554dba5dff6b661726cd9fd475/href</a></iframe><p>Now that we know how it works, let’s make it more flexible for the future.</p><p>8. The work to <strong>decouple design systems </strong>and move Material and Cupertino into their own packages is underway, as announced in <a href="https://blog.flutter.dev/whats-new-in-flutter-3-35-c58ef72e3766">Flutter 3.35</a>. This is a big step for the maturity and flexibility of the ecosystem. I’ll let Justin explain exactly what this means:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FW4olXg91iX8%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DW4olXg91iX8&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FW4olXg91iX8%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/84c78bed7a547d4b9277957e64e04684/href">https://medium.com/media/84c78bed7a547d4b9277957e64e04684/href</a></iframe><p>9. We know speed matters… so <strong>we made build_runner faster</strong> (two or more times in some cases!). John shares how we’re accelerating Dart code generation in this great video:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F6PKIv7yUKwQ%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D6PKIv7yUKwQ&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F6PKIv7yUKwQ%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/d236badfa255eb2d6d68fc60dd64824d/href">https://medium.com/media/d236badfa255eb2d6d68fc60dd64824d/href</a></iframe><p>10. Another thing that sped up in 2025 is the pace of AI.</p><p><strong>AI truly took center stage in the Flutter and Dart ecosystem. </strong>The <a href="https://flutter.dev/events/building-agentic-apps#home">Building Agentic Apps</a> series and our announcements at <a href="https://blog.flutter.dev/dart-flutter-momentum-at-google-i-o-2025-4863aa4f84a4">Google I/O</a> really set the tone, and we’re ending the year with two <a href="https://www.youtube.com/live/zNHoHAPizHM?si=ysUxB6Q2FnSOGmXb">Flutter Flight Plans</a> to prepare for take off into the future of apps. 2025 brought a massive leap in AI-assisted development. Read all about it in our <a href="https://docs.flutter.dev/ai/create-with-ai">Create with AI</a> section of the Flutter documentation.</p><p>The <a href="https://blog.flutter.dev/supercharge-your-dart-flutter-development-experience-with-the-dart-mcp-server-2edcc8107b49"><strong>Dart and Flutter MCP Server</strong></a> is now stable, empowering tools like Gemini CLI, Antigravity, and wherever you’re building with AI.<br>It’s been incredible to see <a href="https://blog.flutter.dev/gemini-in-android-studio-now-speaks-fluent-flutter-915dfec98274">Gemini in Android Studio supercharge Dart and Flutter development</a>. And the <a href="https://blog.flutter.dev/meet-the-flutter-extension-for-gemini-cli-f8be3643eaad">Flutter Extension for Gemini CLI</a>? Game changer for AI-assisted app building.</p><p>We’re also announcing the <a href="https://docs.flutter.dev/ai-toolkit">Flutter AI Toolkit</a> v1.0, now ready for your production workloads. The Flutter AI Toolkit is a set of AI-related widgets to make it easy to add an GenAI features to your Flutter app. Since our last beta release, the AI Toolkit has migrated to the Firebase AI Logic SDK, adding new features along the way, including multi-turn function calling for agentic workflows, the ability to plug-in custom speech-to-text translators, and full support for turning LLM responses into widgets.</p><p>And speaking of new tools, Google introduced <a href="https://docs.flutter.dev/ai/create-with-ai#antigravity"><strong>Antigravity</strong></a>, a new IDE experience aimed at boosting developer workflows with AI. We’re partnering with teams across Google to make Flutter development a world-class experience in all of the ways that Google AI is available. Watch <a href="https://www.youtube.com/live/s5uGpolyHd4?si=7Jrct-RHW2lTiKq0">the Observable&lt;Flutter&gt; livestream</a> for more.<br><br>I want to share one more thing that we’re most excited about heading into 2026…</p><p>11. We launched the alpha of the <a href="https://blog.flutter.dev/rich-and-dynamic-user-interfaces-with-flutter-and-generative-ui-178405af2455"><strong>GenUI SDK for Flutter</strong></a> on pub.dev, opening doors for creating dynamic UIs with LLMs.</p><p>GenUI is here to help you generate Flutter UI from natural language or structured data, potentially speeding up your development flow significantly. I’ll let Khanh dive into the details:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FK2p5Nrn2OSU%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DK2p5Nrn2OSU&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FK2p5Nrn2OSU%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/f26495baf90aed4348e4619c28850896/href">https://medium.com/media/f26495baf90aed4348e4619c28850896/href</a></iframe><p>It’s fantastic to see the community already building on GenUI!<br>Check out two community members doing just that:</p><ul><li><a href="https://x.com/KhalidWar/status/1995304031129071718">Khalid built an AI Concierge Agent using GenUI</a>, including a great recap video. Definitely check it out!</li><li><strong>dartantic by Chris Sells</strong><br>The <a href="https://pub.dev/packages/dartantic_ai">dartantic_ai package</a> is an agent framework designed to build multi-model agentic apps that run wherever Dart runs, including mobile, web, desktop, the CLI, or on the server. With the new 2.0 release, <a href="https://github.com/flutter/genui/pull/583/">dartantic provides a ContentGenerator</a> for implementation in the new Flutter GenUI project. This enables you to plug in any provider or model as well as taking advantage of advanced features like server-side tools — like web search and code execution — and media generation, including out of the box support for Google’s new Nano Banana Pro.</li></ul><p><strong>We’re working to make our GenUI SDK an industry leader.</strong></p><p>One way is partnering with the teams behind <a href="https://google.github.io/adk-docs/"><strong>ADK</strong></a> and <a href="https://a2ui.org/"><strong>A2UI</strong></a>, offering a more template-driven approach to UI generation. Rody’s talk explores how Flutter is leveraging ADK:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FDum-LYLm0Uw%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DDum-LYLm0Uw&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FDum-LYLm0Uw%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/207e1497b8bc901a4dd5a6a490c4aab8/href">https://medium.com/media/207e1497b8bc901a4dd5a6a490c4aab8/href</a></iframe><h3>What are you building over winter break?</h3><p>I ended that list feeling inspired and <em>overwhelmed</em>. There’s so much innovation it’s sometimes hard to keep up. But luckily, the holidays are a perfect time to tinker!</p><p>We’re all excited for the holidays for different reasons, some are headed skiing, spending time with loved ones, but it’s also a chance to dig in and learn something new.</p><p>If that’s you, we’d love to see what you build. Here are some ideas we’ve brainstormed:</p><p>1. <strong>Rebuild your personal site in Jaspr — and use Antigravity to make it easier to change up your tech stack<br></strong>Take an existing website and use an agent to migrate it to Jaspr in a fraction of the time it would take manually, we’ve found Antigravity is <em>very</em> good at this.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2Fw05Mwgk_R4g%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3Dw05Mwgk_R4g&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2Fw05Mwgk_R4g%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/66cc1433c9506093a6068935700e3fb7/href">https://medium.com/media/66cc1433c9506093a6068935700e3fb7/href</a></iframe><p>2. <strong>Start learning about the future of Dynamic UI with GenUI<br></strong>Build a GenUI Live Sketch Pad app where typed UI descriptions are rendered in real-time by GenUI. Or, if you build something else with the SDK, let us know on socials. The package is alpha so we’re actively looking for feedback on your experience using it!</p><p>3. <strong>Build an Agentic Workflow:</strong> Install the <a href="https://docs.flutter.dev/ai/mcp-server">Dart MCP server</a> and create a workflow that takes a screenshot of your app, gets a critique from Gemini, and applies the changes with hot reload.</p><p>4. <strong>Generate UIs from Thin Air:</strong> Take your workflow one step further by using <a href="https://stitch.withgoogle.com/">Stitch</a> to design a UI, then ask Gemini to write the Flutter code for you.</p><p>5. <strong>Become a Flutter contributor:</strong> Make your first contribution to Flutter. Find and fix an open documentation issue or tackle a “good first bug.”</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F4yBgOBAOx_A%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D4yBgOBAOx_A&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F4yBgOBAOx_A%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/802386d5be7a94dc6cb6803169b92fc5/href">https://medium.com/media/802386d5be7a94dc6cb6803169b92fc5/href</a></iframe><p>6. <strong>Crush Performance Bugs:</strong> Use DevTools to <a href="https://docs.flutter.dev/perf">profile your app’s performance</a>. Identify and fix a performance bottleneck using tracing and your coding agent.</p><p>7. <strong>Modernize Your Codebase: </strong>Supercharge your existing Flutter project by refactoring it with <a href="https://dart.dev/language/dot-shorthands">Dart 3.10’s dot shorthands</a> for cleaner, more concise code.</p><p>8. <strong>Exploring Gemini APIs in Flutter </strong>Build a voice app showcasing different Gemini API features using the <a href="http://g.co/firebase/flutter-ai-playground">Flutter AI Playground</a> sample app which uses the Firebase AI Logic SDK.</p><p>9. <strong>Build Your Own Code Assistant:</strong> Train an agent on your GitHub repository to automatically manage your package dependencies or perform other tedious tasks.</p><p>10. <strong>Level Up Your App with the Ecosystem: </strong>Integrate a service from a Flutter-based business like <a href="https://shorebird.dev/">Shorebird</a> for over-the-air updates or <a href="https://serverpod.dev/">Serverpod</a> for a scalable backend.</p><p>Share your winter break projects with the community using the hashtag #Flutter2026.</p><h3>Thank you for being a part of Flutter in 2025, see you in 2026!</h3><p>With the foundations laid in 2025, we’re incredibly excited for 2026 as we push the boundaries of multi-platform development, dive deeper into AI-driven ephemeral experiences, and empower you to build the truly full-stack, cross-platform applications of the future.</p><p>A huge THANK YOU to the incredible Flutter and Dart communities. Your passion, feedback, and contributions made 2025 amazing. We feel so lucky to be a part of this community. 💙</p><p>Wishing you all a wonderful and innovative winter break. We can’t wait to see what you back and building in 2026!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a809c8325309" width="1" height="1" alt=""><hr><p><a href="https://blog.flutter.dev/the-top-ten-highlights-from-flutter-dart-in-2025-a809c8325309">The Top Ten Highlights from Flutter &amp; Dart in 2025</a> was originally published in <a href="https://blog.flutter.dev">Flutter</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Jaime’s build context: A Flutter developer’s thoughts about Antigravity + Tips!]]></title>
            <link>https://blog.flutter.dev/jaimes-build-context-a-flutter-developer-s-thoughts-about-antigravity-tips-222e2e35d56f?source=rss----4da7dfd21a33---4</link>
            <guid isPermaLink="false">https://medium.com/p/222e2e35d56f</guid>
            <category><![CDATA[developer-tools]]></category>
            <category><![CDATA[generative-ai-tools]]></category>
            <category><![CDATA[flutter-app-development]]></category>
            <category><![CDATA[google-antigravity]]></category>
            <category><![CDATA[flutter]]></category>
            <dc:creator><![CDATA[Jaime Wren]]></dc:creator>
            <pubDate>Tue, 09 Dec 2025 17:02:12 GMT</pubDate>
            <atom:updated>2025-12-09T17:02:12.117Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*iTTaVFKTZVHVl3ykFCmjyw.jpeg" /></figure><p>Hi, I’m Jaime Wren, a long-time developer tooling software engineer on the Flutter team. I’ve seen many shifts in the software industry over the years, but the whole industry has just stepped into a new Wild West at breakneck speed and this is both exciting and nerve-wracking.</p><p>In my opinion, we developers are complicated creatures driven by two forces: the need for productivity with our tasks and our inherent joy of programming itself. We thrive when we can slip into a fast, uninterrupted loop. To realize our full potential as developers, we need our entire toolchain to come together without introducing friction. As we transition into the Agentic Era, this need for a cohesive loop is non-negotiable; this is where Flutter has a distinct advantage.</p><p>I’ve tested a lot of AI tools these last few years, waiting for something that actually will save Flutter developers time rather than just shifting where time is spent. Nothing turned the corner for me until <a href="https://antigravity.google/">Antigravity</a>, Google’s new Agentic IDE. It bridges the gap between raw model capability and actual engineering utility. I can finally see all of the infrastructure and tooling around the LLMs coming together to remove friction, rather than adding to it.</p><p>From my own testing, Flutter isn’t just “compatible” with AI tools like Antigravity; it is uniquely equipped to power them. Why? It comes down to Flutter’s strict structures and robust tooling. A core philosophy of Antigravity is a reliance on verification to know if a piece of code actually works. Flutter’s tools provide the immediate feedback that Antigravity’s agents need to validate these actions. All it takes to get started are a few settings to <a href="https://docs.flutter.dev/ai/mcp-server#antigravity">configure</a> extensions and the MCP server.</p><h3>Some cool things you can do</h3><p>There are several cool things that I and other members of the Flutter community have learned to do with Antigravity to speed our development process. I’ve listed a few of them below, but I request that if you have any additional tips, please add them in the comments attached to this post.</p><h4>Run tests &amp; fix the problematic code</h4><p>You can use Antigravity to run existing tests, fix any problematic code that is breaking your tests, and then verify that the tests are passing again. Here is the prompt that I use:</p><pre>Execute the full test suite with `flutter test`. If failures occur,<br>fix them one by one. After applying each fix, re-run the full suite one<br>last time to ensure no regressions.</pre><h4>Fix errors and warnings</h4><p>To prepare a PR before pushing it, you can use Antigravity to fix your errors, warnings and lints. Here is my prompt for this:</p><pre>Run `flutter analyze` over my project. If it fails, fix any errors and <br>warnings, then validate that they are fixed.</pre><h4>Discover lints and use them</h4><p>There are a lot of lints out there but I don’t have time to research them all and figure out which ones are best for each project. I discovered that this cool prompt helps Antigravity quickly scan my project, suggest, and enable lints that make sense for it:</p><pre>Read https://dart.dev/tools/linter-rules and identify rules I am<br>implicitly following but haven&#39;t enabled. Add them to analysis_options.yaml,<br>run flutter analyze, and fix any resulting violations.</pre><h4>Discover good pub.dev packages for my project</h4><p>There are tons of pub.dev packages out there, and like the lints, researching them takes time and effort. I wanted a way to figure out which ones might be best for my projects while not leaving my IDE. This prompt worked well for me:</p><pre>I need preferences to be shared from one instance of my app to the next,<br>please go search for this feature in https://pub.dev/, then run<br>`flutter pub get`, validate that the pub status is in a good status.<br>Then, find an example in my project to use this new package,<br>fix any issues that appear from `flutter analyze`, and fix them.<br>Finally, add a test for the new feature.</pre><h3>Thoughts about my journey with Flutter over the years and why I’m excited</h3><p>I remember when Flutter entered the scene about 10 years ago. From the beginning and in my opinion, Flutter brought together the right language, framework and tools to be usable-by-default. An often overlooked factor in Flutter’s success is that these pieces weren’t bolted together from different vendors. Instead, the framework, rendering engine, CLI tooling, IDE tooling, language and ecosystem have always been driven by the same organization that has enabled these teams to coordinate to enable the usable-by-default cohesive vision. It’s because of this that I believe there is a “I finally get Hot Reload” moment for every new Flutter developer that makes them excited and hopeful because:</p><ul><li>The Flutter infrastructure is capable of patching code in milliseconds.</li><li>The errors and warnings appear as you type and ensure that code is valid before a save occurs.</li><li>The language helps prevent syntax errors and frictions.</li><li>Obvious overflow errors are displayed as yellow and black stripes that signal layout issues that need to be addressed.</li></ul><p>In the past year, the promise of generative AI in software development has been akin to the Wild West–demos and products have shown a lot of progress, but have not followed the usable-by-default mantra that has been core to Flutter’s success. With model improvements such as larger context windows that allow a model to actually read a project, and with concepts in the space converging, frameworks like Flutter have had an entry point to add value to agents and workflows. The Flutter team followed suit this year with the <a href="https://docs.flutter.dev/ai/genui">GenUI</a> effort, the <a href="https://docs.flutter.dev/ai/mcp-server">Dart and Flutter MCP Server</a>, and <a href="https://docs.flutter.dev/ai/ai-rules">AI rules</a> suggestions.</p><p>Now, with Antigravity entering the arena, we have something that is more than a chatbot built into a window in your IDE. <strong>Antigravity inhabits the IDE</strong>, running commands and using knowledge about other Flutter and Dart projects to correctly follow your direction and take actions on your behalf in the project space.</p><p>As Flutter engineers, we take for granted the ability to know how to immediately run static analysis (dart analyze) or launch an app (flutter run) in a project we’ve never seen before. While none of these restrictions have limited what developers could <em>create</em> with Flutter, the natural consequence with LLMs and agentic tooling is that our collective uniformity gives these interfaces a huge leap forward in understanding and acting on the structure of our projects.</p><p>To reap the benefits of LLM tooling, agents require a verification through a positive feedback loop. If a model is producing value on every tenth piece of output and hallucinating the other nine instances, I might be amused, but I won’t be using the tool again. With Antigravity, <em>verification</em> is a core philosophy designed to give agents a feedback loop, allowing them to iterate before finishing work. This is where the benefit of existing robust Flutter tools comes into play, when using Antigravity to assist in writing code, the agent literally iterates until analysis is clean, formatting is consistent, tests pass, and the output from `flutter run` confirms that pixels are being drawn.</p><h3>In summary</h3><p>Without a doubt, these new AI tools are redefining how we identify as productive developers who enjoy the practice of programming. Equally without doubt, a robust, fast, uninterrupted loop will continue to be the centerpiece of that experience.</p><p>Antigravity doesn’t replace the programmer; it removes the drudgery that stands between your idea and reality. The loop is getting faster, the ramp is already built, and the future of Flutter is more usable — and more joyful — than ever.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=222e2e35d56f" width="1" height="1" alt=""><hr><p><a href="https://blog.flutter.dev/jaimes-build-context-a-flutter-developer-s-thoughts-about-antigravity-tips-222e2e35d56f">Jaime’s build context: A Flutter developer’s thoughts about Antigravity + Tips!</a> was originally published in <a href="https://blog.flutter.dev">Flutter</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Rich and dynamic user interfaces with Flutter and generative UI]]></title>
            <link>https://blog.flutter.dev/rich-and-dynamic-user-interfaces-with-flutter-and-generative-ui-178405af2455?source=rss----4da7dfd21a33---4</link>
            <guid isPermaLink="false">https://medium.com/p/178405af2455</guid>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[flutter-development]]></category>
            <category><![CDATA[genuis]]></category>
            <category><![CDATA[generative-ai-tools]]></category>
            <category><![CDATA[flutter]]></category>
            <dc:creator><![CDATA[Abdallah W Shaban]]></dc:creator>
            <pubDate>Tue, 18 Nov 2025 16:41:23 GMT</pubDate>
            <atom:updated>2025-11-18T16:41:21.702Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2R8k2Qbswy4G7h3yYIyk1A.png" /><figcaption>Introducing the GenUI SDK for Flutter</figcaption></figure><p>We’re thrilled to introduce GenUI SDK for Flutter, now available in alpha on <a href="https://pub.dev/packages/genui">pub.dev</a>. This new SDK for Flutter helps you generate dynamic, personalized UI with Gemini (or other LLMs) to significantly improve the usability and satisfaction of your GenAI and agent-based user experiences, which also adheres to your established brand guidelines and using your own widget catalog.</p><p>Today’s app users expect not only beautiful and fast UIs, but also more dynamic, deeply personalized, and adaptive experiences. We are building GenUI SDK for Flutter, a suite of packages, to make it easier for you to build and deliver this new generation of experiences to all of your users.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*yZgCoXy4aivZfEjgTJMOrA.png" /><figcaption>From traditional chatbots to dynamic, interactive, graphical experiences</figcaption></figure><p>A great example of a powerful generative UI experience built with Flutter and Gemini is the new experimental <a href="https://blog.google/products/gemini/gemini-3-gemini-app/">visual layout</a> feature in the Gemini app (<a href="https://apps.apple.com/us/app/google-gemini/id6477489729">App Store</a>, <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.bard&amp;hl=en_US">Play Store</a>), rolling out today. It generates an immersive, magazine-style view of the information, complete with photos and modules. These generative elements don’t just look great; they are interactive and help you further customize the experience. Gemini’s new visual layout feature inspired us to build the GenUI SDK for Flutter, so that anyone can also build the same kinds of dynamic, interactive, generative experiences.</p><h3>How does GenUI SDK for Flutter work?</h3><p>At its core, the GenUI SDK for Flutter is an orchestration layer. It coordinates the flow of information between your user, your Flutter widgets, and an AI agent, transforming text-based conversations into rich, interactive experiences.</p><figure><img alt="Diagram of agentic loop for the GenUI SDK for Flutter" src="https://cdn-images-1.medium.com/max/1024/1*hxPwEhX6gYuF8CO2lGydkg.png" /></figure><ol><li><strong>The app sends a request:</strong> The user provides a prompt (for example, “Help me plan a trip to Tokyo!”). Your app calls your AI agent with the prompt and additional information about the catalog of widgets it can use and compose together in response.</li><li><strong>The AI agent generates both content and UI to display it:</strong> The AI agent generates a response, but instead of just relying on text, it uses tools provided by the GenUI SDK to describe the UI most suited to the content it generated.</li><li><strong>UI is dynamically rendered:</strong> The GenUI SDK receives the response, deserializes it, and builds the appropriate widgets. Some are informational, some are layout, and some can be interactive (and might include sliders, buttons, or a date picker).</li><li><strong>The user interacts with the dynamic UI: </strong>The user taps on buttons and other controls, which can trigger followup requests to the agent, which result in more UI updates, and so on.</li></ol><p>This loop enables you to move beyond simple text responses. By defining your own custom widgets, the GenUI SDK for Flutter ensures the dynamically generated UI is compliant with your branding guidelines.</p><p>For a more detailed explanation and walkthrough of the GenUI SDK for Flutter, check out the following video:</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FnWr6eZKM6no%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DnWr6eZKM6no&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FnWr6eZKM6no%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/2a06fa0141096a03ca6621a70f670376/href">https://medium.com/media/2a06fa0141096a03ca6621a70f670376/href</a></iframe><h4>The UI protocol under the covers</h4><p>The GenUI SDK for Flutter is built around the <a href="https://a2ui.org/">upcoming A2UI protocol</a> in collaboration with Google’s <a href="https://a2a-protocol.org/">A2A</a> team and the <a href="https://opal.google/">Opal</a> team at Google Labs. A2UI is a new (soon to be open source) toolkit to facilitate implementing LLM-generated UIs in any framework. We use A2UI as the serialization format for UI that is generated by the LLM, and the GenUI SDK for Flutter is using an early version of an A2UI renderer.</p><h3>How do I get started with building GenUI experiences?</h3><p>We want to make it easy to experiment with the GenUI SDK for Flutter, so we’ve bundled in <strong><em>content generators</em></strong> for LLMs, <strong><em>sample apps</em></strong> to see it in action, and <strong><em>markdown docs</em></strong> for coding agents (and humans!)</p><ul><li>First, grab the main pub package for <a href="https://pub.dev/packages/genui">genui</a>.</li><li>Next, choose a content generator. The following are the content generator options we provide that support a variety of use cases:<br>- <a href="https://pub.dev/packages/genui_google_generative_ai">Google Gemini API</a>: Useful for experimentation and local testing as you’re mapping out your experience.<br>- <a href="https://pub.dev/packages/genui_firebase_ai">Firebase AI logic</a>: Useful for production apps where interactions with the LLM are all in your Flutter client, without requiring a server. Firebase also makes it easier to ship your AI features securely since Firebase handles the management of your Gemini API key.<br>- <a href="https://pub.dev/packages/genui_a2ui">A2UI</a>: Useful for client/server architectures where your agent is running on the server.<br>- Build your own: Of course, you can also build your own adapter to connect to your preferred LLM provider. Expect more from us and the community soon.</li></ul><p>To make it easy for your coding agent to build with the GenUI SDK for Flutter, we also included <a href="https://github.com/flutter/genui/tree/main/packages/genui/.guides">markdown docs</a>. These markdown files teach your coding agent how to use the various GenUI SDK APIs.</p><p>The <a href="https://github.com/flutter/genui">flutter/genui repo</a> has sample apps that you can use to give you a good starting point for building GenUI experiences. The following video shows the <a href="https://github.com/flutter/genui/tree/main/examples/verdure">Landscape design app</a> , which gives you an example of a Flutter client interacting with a Python-based server using A2A (Agent-to-Agent) and ADK, with UI generated dynamically by the AI agent. In this demo app, the user can upload a picture of their yard, Gemini analyzes it, and then through the GenUI SDK for Flutter provides a custom UI for the user to enter their constraints and requirements for updating their yard’s landscaping. Once the user inputs their preferences, then they would see a result that takes into account their selections. This app demonstrates how a GenUI-based experience improves the collaboration between human and agent.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/480/1*fvTGsrJGfrH1JCeBnMyHVA.gif" /><figcaption>Landscape design app demo</figcaption></figure><h3>What’s coming next?</h3><p>We are building the GenUI SDK for Flutter to help you deliver personalized, dynamic, AI-driven app experiences across mobile, web, and desktop from a single codebase. Here are some of the things we are considering for our roadmap:</p><ul><li><strong>Agent Development Kit (ADK) plugin:</strong> turnkey integration with ADK.</li><li><strong>Expanded LLM framework support:</strong> Official adapters for other popular AI models and backend frameworks.</li><li><strong>Reduced perceived latency:</strong> Progressively rendering standard UI components as the LLM generates them, rather than waiting for the full response.</li><li><strong>Full-screen composition:</strong> Moving beyond individual widgets in a stream to let the LLM compose entire screen layouts and handle complex app navigation based on user intent.</li><li><strong>Dart bytecode:</strong> Providing true server-driven UI by allowing the backend to send entirely new widget logic over the wire, not just configurations for widgets already in your binary.</li><li><strong>Genkit integration:</strong> Integration with <a href="https://genkit.dev/">Genkit</a>, an open-source AI framework.</li></ul><p>The project is still in its early phases, so we’re excited to hear your thoughts and <a href="https://github.com/flutter/genui/discussions">feedback</a>. We can’t wait to see the GenUI experiences you build with Flutter!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=178405af2455" width="1" height="1" alt=""><hr><p><a href="https://blog.flutter.dev/rich-and-dynamic-user-interfaces-with-flutter-and-generative-ui-178405af2455">Rich and dynamic user interfaces with Flutter and generative UI</a> was originally published in <a href="https://blog.flutter.dev">Flutter</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>