<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Bits of Flutter</title><description>Articles about Flutter architecture, patterns, and best practices by Arturo Grau.</description><link>https://bitsofflutter.dev/</link><item><title>Golden Tests Are Faster Than Compiling Your App (And You Should Let AI Write Them)</title><link>https://bitsofflutter.dev/golden-tests-are-faster-than-compiling-your-app/</link><guid isPermaLink="true">https://bitsofflutter.dev/golden-tests-are-faster-than-compiling-your-app/</guid><description>I realized I was spending more time compiling the app and navigating to a screen to verify a UI change than it would take to just ask the AI to generate a golden test. In this post I will explain you how I stopped building and just asking the AI for &quot;screenshots&quot; of my screen.</description><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate></item><item><title>AI Coding Got Better and It Requires Us to Be Even Better Engineers</title><link>https://bitsofflutter.dev/we-need-to-be-better-engineers-not-worse/</link><guid isPermaLink="true">https://bitsofflutter.dev/we-need-to-be-better-engineers-not-worse/</guid><description>This weekend I spent some time reviewing the backend code of a project generated with AI. I wanted to test how it feels to build a full project from scratch only vibe coding with Claude Code. The code worked, but when I looked closer I found security issues everywhere.</description><pubDate>Mon, 16 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Repository Stream Pattern: a Reactive Way to Keep Your UI in Sync</title><link>https://bitsofflutter.dev/repository-stream-pattern-in-flutter-a-reactive-way-to-keep-your-ui-in-sync/</link><guid isPermaLink="true">https://bitsofflutter.dev/repository-stream-pattern-in-flutter-a-reactive-way-to-keep-your-ui-in-sync/</guid><description>One reactive source of truth. The repository streams data, and each feature listens and derives its own state independently. Clean, decoupled, and easy to scale.</description><pubDate>Thu, 20 Nov 2025 00:00:00 GMT</pubDate></item><item><title>BLoC Powered Components</title><link>https://bitsofflutter.dev/bloc-powered-components/</link><guid isPermaLink="true">https://bitsofflutter.dev/bloc-powered-components/</guid><description>Don&apos;t make one single BLoC for the whole page. Follow the Single Responsibility Principle and split UI components into small features with their own BLoCs.</description><pubDate>Wed, 19 Nov 2025 00:00:00 GMT</pubDate></item><item><title>How to Avoid Prop Drilling in Flutter Without External Packages</title><link>https://bitsofflutter.dev/stop-prop-drilling-in-flutter/</link><guid isPermaLink="true">https://bitsofflutter.dev/stop-prop-drilling-in-flutter/</guid><description>Prop drilling happens when data travels through widgets that do not need it. In this post I show how I removed it in my project and made the code cleaner using a provider.</description><pubDate>Thu, 13 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Handling Flutter Imports Like a Pro (2025 Edition)</title><link>https://bitsofflutter.dev/handling-flutter-imports-like-a-pro-2025-edition/</link><guid isPermaLink="true">https://bitsofflutter.dev/handling-flutter-imports-like-a-pro-2025-edition/</guid><description>Learn how to keep your Flutter imports clean and scalable using the barrel file pattern, and see how my new VS Code extension Barrel Me automates the process with one click.</description><pubDate>Wed, 12 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Global UI with Overlays</title><link>https://bitsofflutter.dev/global-ui-with-overlays/</link><guid isPermaLink="true">https://bitsofflutter.dev/global-ui-with-overlays/</guid><description>Ever needed to display a widget above all other content? Flutter&apos;s Overlay widget is your secret weapon for custom notifications, persistent tooltips, and truly floating elements.</description><pubDate>Wed, 05 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Clean UI with Widget Extensions</title><link>https://bitsofflutter.dev/clean-ui-widget-extensions/</link><guid isPermaLink="true">https://bitsofflutter.dev/clean-ui-widget-extensions/</guid><description>Extension methods offer a powerful way to encapsulate common UI patterns, making your widget trees much cleaner and more readable. Instead of wrapping every widget, you can chain these extensions for a more fluent API.</description><pubDate>Tue, 04 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Ghost State in BLoC</title><link>https://bitsofflutter.dev/ghost-state-in-bloc/</link><guid isPermaLink="true">https://bitsofflutter.dev/ghost-state-in-bloc/</guid><description>Sometimes your BLoC looks fine, but part of its logic lives outside the state hidden in private fields that never get emitted. That&apos;s ghost state. In this post, I show a real example of how it happens, and how to fix it so your state tells the whole story.</description><pubDate>Sun, 02 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Smooth Transitions in Flutter with AnimatedSwitcher</title><link>https://bitsofflutter.dev/smooth-transitions-in-flutter-with-animatedswitcher/</link><guid isPermaLink="true">https://bitsofflutter.dev/smooth-transitions-in-flutter-with-animatedswitcher/</guid><description>A quick tip on how to make your Flutter UI transitions feel smoother using AnimatedSwitcher.</description><pubDate>Sat, 01 Nov 2025 00:00:00 GMT</pubDate></item><item><title>When BLoCs Start Talking Too Much</title><link>https://bitsofflutter.dev/when-blocs-start-talking-too-much/</link><guid isPermaLink="true">https://bitsofflutter.dev/when-blocs-start-talking-too-much/</guid><description>(and how the Mediator Pattern can save you) Sometimes in a Flutter app, one BLoC starts depending on another. Maybe the profile screen needs the current user ID from the AuthBloc. So we inject one BLoC into the other. It works. Until it doesn&apos;t.</description><pubDate>Fri, 24 Oct 2025 00:00:00 GMT</pubDate></item></channel></rss>