Code Snippets
Production-tested Flutter and Dart patterns. Copy, adapt, and ship faster. Updated regularly with real-world solutions.
Clean Architecture2
UseCase Base Class
intermediateAbstract base class for use cases following Clean Architecture. Handles single input/output with Either for error handling.
import 'package:dartz/dartz.dart';
abstract class UseCase<Type, Params> {
Future<Either<Failure, Type>> call(Params params);Repository Pattern
intermediateClean Architecture repository with abstract interface and implementation. Handles network/cache strategy.
// Domain layer – abstract
abstract class UserRepository {
Future<Either<Failure, User>> getUser(String id);
Future<Either<Failure, List<User>>> getUsers();State Management3
Cubit Template
beginnerComplete Cubit pattern with states. Best practice for simple BLoC-lite state management.
import 'package:flutter_bloc/flutter_bloc.dart';
// States
sealed class CounterState {}GetX Controller Template
beginnerProduction-ready GetX controller with reactive state, lifecycle hooks, and dependency injection.
import 'package:get/get.dart';
class ProductController extends GetxController {
// Reactive stateRiverpod AsyncNotifier
intermediateModern Riverpod 2.x AsyncNotifier pattern for async state management with codegen-ready syntax.
import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'user_provider.g.dart';
Navigation1
HTTP & APIs1
Firebase1
UI & Widgets2
Responsive Layout Builder
beginnerLayout builder that adapts to screen size. Returns different widgets for mobile, tablet, and desktop.
enum ScreenSize { mobile, tablet, desktop }
extension ScreenSizeExtension on BuildContext {
double get screenWidth => MediaQuery.of(this).size.width;Loading Overlay
beginnerReusable loading overlay widget that blocks interactions while async operations run.
class LoadingOverlay extends StatelessWidget {
const LoadingOverlay({
super.key,
required this.isLoading,Utils & Extensions2
Dart String Extensions
beginnerCommonly needed String extension methods for Flutter apps — capitalization, truncation, validation, and more.
extension StringX on String {
// Capitalize first letter
String get capitalize => isEmpty ? this : '${this[0].toUpperCase()}${substring(1)}';
DateTime Extensions
beginnerUseful DateTime extension methods for formatting, comparison, and humanizing timestamps in Flutter.
import 'package:intl/intl.dart';
extension DateTimeX on DateTime {
// FormattingWant a snippet added?
Missing a pattern? Suggest it and we'll add it to the library.
Suggest a Snippet →