Skip to content
tezvyn:

Flutter & Dart

Flutter framework, Dart language, packages, Impeller

167 bites

Test yourself: Top 30 Flutter & Dart concepts questionsMultiple choice, with the correct answer and why it is correct on every question. Free, no sign-in.

Concepts in Flutter & Dart, page 4

intermediate2 min read

Flutter's Form Widget: Grouping and Validating Input

A Flutter Form acts as a supervisor for multiple input fields, letting you validate and save them all at once. Use it for login screens or user profiles. The footgun is forgetting the GlobalKey, which makes it impossible to trigger validation.

intermediate2 min read

FocusNode: Programmatically Managing Widget Focus

A FocusNode is your handle to a widget's focus state, letting you programmatically request focus or listen for changes. It's essential for forms, like moving focus from one TextField to the next.

intermediate2 min read

Dismissible: The Swipe-to-Remove Widget in Flutter

A Dismissible widget lets you swipe away list items, like clearing notifications. Use it for to-do lists or email inboxes. The key footgun: you MUST provide a unique Key and remove the item from your data source in onDismissed, or it will reappear on…

advanced2 min read

Flutter's Gesture Arena: Who Wins the Touch Event?

The Gesture Arena is a contest where multiple gesture detectors compete for one touch event. This happens when a tappable button is inside a scrollable list. The biggest footgun is a gesture not firing because an unexpected detector won the competition.

advanced2 min read

Build Custom Inputs with Flutter's FormField Widget

FormField is a state wrapper, not a UI widget, that turns any widget into a validatable form input. Use it for custom inputs like sliders or star ratings that must integrate with a Form. The footgun is forgetting to supply the UI via its builder.

advanced1 min read

RawKeyboardListener: Deprecated Hardware Key Events in Flutter

This is a deprecated Flutter widget for capturing raw hardware keyboard events, bypassing text input systems. It was for games or custom shortcuts, but the biggest mistake is using it now. Use KeyboardListener instead.

easy2 min read

MaterialPageRoute: The Page in Your Navigator Stack

Think of Navigator as a stack of screens. MaterialPageRoute wraps your new screen widget, defining its platform-specific transition (slide on iOS, zoom on Android). You use it with Navigator.push to show a new screen.

easy2 min read

Imperative Navigation: Pushing and Popping Screens

Think of app screens as a stack of cards. You push a new screen onto the top to show it and pop it off to go back. It's ideal for linear flows like list-to-detail. The footgun: popping the last screen closes the app.

easy2 min read

Flutter Named Routes: Navigate with Strings, Not Widgets

Think of named routes as URL paths for your app's screens. Instead of building a screen widget on the spot, you just tell Flutter "go to '/profile'". This is ideal for centralizing navigation in large apps and for enabling deep linking.

easy2 min read

Passing Arguments to Flutter Named Routes

Flutter named routes pass data through an arguments field instead of global variables. Use this when navigating to a route that needs an ID or configuration object. Arguments are untyped by default, so unsafe casts crash at runtime.

intermediate2 min read

GoRouter: URL-Based Navigation for Flutter Apps

GoRouter treats your app's screens like web pages with URLs. This declarative approach simplifies deep linking and passing data via paths like /users/123. The footgun is forgetting its declarative nature and trying to manage state imperatively.

intermediate2 min read

Flutter's Router API: Declarative Navigation

The Router API treats navigation as state. You declare the page stack based on app state, giving you full control over URLs and the back button. This is vital for web/desktop apps but introduces significant boilerplate compared to simple push/pop navigation.

intermediate2 min read

Flutter Hero Animations: Guiding the User's Eye

A Hero animation makes a widget appear to fly from one screen to another, connecting two UIs. It's perfect for transitioning a thumbnail to a detail page, guiding the user's focus. The main footgun is using non-unique tags, which causes animations to fail.

advanced2 min read

PageRouteBuilder: Custom Routes Without the Boilerplate

PageRouteBuilder creates a custom page route on the fly, skipping the boilerplate of a full subclass. Just provide a pageBuilder for the screen's content and a transitionsBuilder for a unique animation.

advanced2 min read

PopScope: Guarding Your Flutter Routes

PopScope acts as a gatekeeper for back navigation in Flutter, letting you intercept and block attempts to leave a screen. Use it to show a confirmation dialog for unsaved changes. Its behavior differs on iOS; the swipe-back gesture won't trigger its callback.

easy2 min read

Provider: Pass Data Down Your Widget Tree

Think of Provider as a delivery service for your app's data, passing it down the widget tree without sending it through every widget's constructor. It's a lightweight way to manage state. The footgun: never use .value to create a new object.

easy2 min read

ValueNotifier: Notifies on Replacement, Not Mutation

ValueNotifier is a simple state holder that tells widgets to rebuild when its single value is replaced. It's great for immutable data like a boolean toggle or counter.

Cubit: Simple State Management in Flutter
intermediate2 min read

Cubit: Simple State Management in Flutter

A Cubit is a simple state manager that exposes functions to directly trigger state changes. It's ideal for managing local UI state, like a counter or form data, without the complexity of events. The footgun is expecting state to update synchronously.

Riverpod: Compile-Safe, Reactive State Management
intermediate2 min read

Riverpod: Compile-Safe, Reactive State Management

Riverpod treats app state like a reactive formula. Define a piece of data once, and Riverpod automatically updates any UI that depends on it. It's ideal for network requests and shared state. Footgun: Watching a provider rebuilds the UI on every change.

GetX State Management: Simplicity Over Boilerplate
intermediate2 min read

GetX State Management: Simplicity Over Boilerplate

GetX simplifies Flutter state management by removing boilerplate and avoiding code generators. It offers both simple manual updates and a reactive style. Use it for rapid development where minimal setup is key.

We are hiring for this. Every open role lists the topics its interview covers, so you can prepare for the real thing rather than guessing.

See open roles