flutter_base_kit 0.0.1
flutter_base_kit: ^0.0.1 copied to clipboard
A comprehensive Flutter development kit with base classes, utilities, and common patterns for faster app development.
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.