© 2026 Hashnode
A Quick Story to Set the Scene Meet Lumi and Nyx. They share one Flutter app. Lumi prefers light mode — bright cards, cheerful blues, a UI that feels open. Nyx wants the opposite — calm grays, a dark background, something easier on the eyes at night....

There's a category of bug that only shows up in production apps — the kind that doesn't crash, doesn't throw an exception, and doesn't even look wrong on the surface. It just quietly does the wrong thing. One of the most common in security-sensitive ...

When Classes Start Misbehaving At some point in every Dart project, you run into a situation where your classes are being used in ways you never intended. Someone creates an object directly when there should only ever be one. Someone calls an interna...

Flutter's widget system is genuinely impressive. Stack, wrap, align, animate, react — it handles the vast majority of UI requirements without you ever needing to reach for anything lower-level. But eventually, you hit a wall. The design calls for som...

Flutter handles UI beautifully. Widgets compose, animations run smooth, and the same codebase works across Android and iOS without much friction. But there's a gap — Flutter's Dart layer has no direct access to platform APIs. It can't read the batter...

Most Flutter developers spend their time composing existing widgets — Container, Row, Column, Card. That's fine for the majority of UIs. But at some point, you'll get a design that no combination of built-in widgets can produce cleanly. A custom shap...

The Method Named doMagic() It was a Tuesday. I opened a project I hadn't touched in four months. My goal was to fix a simple bug — something I expected to take twenty minutes. Instead I found a method named doMagic(). I stared at it. Why is it async?...

The camera preview was live. The feature request was simple: tap anywhere on the screen and focus the camera there. Like every modern phone camera does when you tap a face or a subject before shooting. I tapped. Nothing. The camera stayed focused whe...

If you've come to Flutter from native Android, one of the first things you'll notice is that the lifecycle methods you relied on — onCreate, onResume, onPause, onStop, onDestroy — don't exist in the same form. Flutter manages lifecycle differently, a...
