Flutter Base Kit

A comprehensive Flutter development kit with base classes, utilities, and common patterns for faster app development.

Features

  • Base Classes: Pre-built Cubit, State, and Exception classes
  • Utilities: Logger, validators, and helper functions
  • Extensions: Useful extensions for String, Color, and other types
  • Error Handling: Built-in error handling patterns
  • Type Safety: Full type safety with Equatable integration

Installation

Add this to your package's pubspec.yaml file:

dependencies:
  flutter_base_kit: ^0.0.1

Usage

Import the package

import 'package:flutter_base_kit/flutter_base_kit.dart';

Base Cubit

Create a Cubit with built-in error handling:

class UserCubit extends BaseCubit<UserState> {
  UserCubit() : super(const UserState());

  Future<void> loadUser() async {
    await safeAction(
      () async {
        // Your async operation here
        final user = await userRepository.getUser();
        emit(state.copyWith(user: user, status: StateStatus.loaded));
      },
      failureCall: (exception) {
        // Handle failure
        loggerApp.e('Failed to load user: ${exception.message}');
      },
    );
  }
}

Base State

Create a state class:

class UserState extends BaseStateI {
  final User? user;

  const UserState({
    super.status,
    super.message,
    this.user,
  });

  UserState copyWith({
    StateStatus? status,
    String? message,
    User? user,
  }) {
    return UserState(
      status: status ?? this.status,
      message: message ?? this.message,
      user: user ?? this.user,
    );
  }

  @override
  List<Object?> get props => [status, message, user];
}

Logger

Use the built-in logger:

loggerApp.i('Info message');
loggerApp.d('Debug message');
loggerApp.w('Warning message');
loggerApp.e('Error message', error: error, stackTrace: stackTrace);

Validators

Use built-in validators:

// Email validation
final emailError = Validators.validateEmail(emailController.text);

// Password validation
final passwordError = Validators.validatePassword(passwordController.text);

// Required field validation
final nameError = Validators.validateRequired(nameController.text);

Extensions

Use helpful extensions:

// String extensions
final color = '#FF5733'.toColor;
final capitalized = 'hello world'.capitalize; // "Hello world"
final titleCase = 'hello world'.toTitleCase; // "Hello World"
final isEmail = 'test@example.com'.isEmail; // true

// Color extensions
final hex = Colors.red.toHex; // "#FF0000"
final darker = Colors.red.darken(0.2);
final lighter = Colors.red.lighten(0.2);
final contrasting = Colors.red.contrastingColor; // White or black

License

This project is licensed under the MIT License - see the LICENSE file for details.

Libraries

flutter_base_kit