flutter_infra 0.0.1  flutter_infra: ^0.0.1 copied to clipboard
flutter_infra: ^0.0.1 copied to clipboard
A comprehensive Flutter package providing clean, type-safe local storage solutions and robust network infrastructure with advanced token management and refresh strategies.
Flutter Infra ๐๏ธ #
A comprehensive Flutter package providing clean, type-safe local storage solutions and robust network infrastructure with advanced token management and refresh strategies.
โจ Features #
๐พ Storage Infrastructure #
- ๐ฏ Multiple Storage Backends: SharedPreferences, FlutterSecureStorage, and Hive support
- ๐ Security First: Clear separation between normal and secure storage operations
- ๐งฉ Type Safety: Built-in support for JSON, lists, DateTime, and custom objects
- โก Performance: Optional caching and optimized storage implementations
๐ Network Infrastructure #
- ๐ Dual HTTP Clients: Built-in support for both dart:io HTTP and Dio implementations
- ๐ Token Management: Automatic token injection and secure storage integration
- ๐ Refresh Token Strategy: Configurable token refresh with Strategy design pattern
- ๐ก Interceptor System: LoggerInterceptor and TokenInterceptor with extensible design
๐ง Common Features #
- ๐ง Dependency Injection: Clean DI support with flexible configuration
- ๐ฑ Cross Platform: Works on iOS, Android, Web, Windows, macOS, and Linux
- ๐งช Fully Tested: Comprehensive test coverage with mock support
๐ Quick Start #
Installation #
dependencies:
  flutter_infra: ^0.0.1
Basic Usage #
import 'package:flutter_infra/flutter_infra.dart';
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // Storage operations
  final storageService = await StorageService.create();
  await storageService.setString('username', 'john_doe');
  await storageService.setSecureString('api_token', 'secret_token');
  
  // Network operations  
  final networkService = await NetworkService.create(
    config: NetworkConfig(baseUrl: 'https://api.example.com'),
  );
  final response = await networkService.getJson('/users/profile');
  
  runApp(MyApp());
}
With Authentication #
// Create network service with automatic token management
final networkService = await NetworkService.createWithTokenSupport(
  config: NetworkConfig(baseUrl: 'https://api.example.com'),
  tokenManager: DefaultTokenManager(storage: storageService),
);
// Tokens are automatically handled
final userProfile = await networkService.getJson('/protected/profile');
๐ Documentation #
๐ Getting Started #
- ๐ Quick Start Guide - Get up and running in minutes
- ๐๏ธ Architecture Overview - System design and component relationships
- โ๏ธ Configuration Guide - Advanced setup and customization options
๐ Service Documentation #
- ๐พ Storage Service - Complete storage documentation with implementations and typed extensions
- ๐ Network Service - Network client documentation with interceptors and configuration
- ๐ Token Management - Token manager, refresh strategies, and security
๐ก Guides & Best Practices #
- ๐ Complete Examples - Real-world usage patterns and implementation examples
- ๐ Best Practices - Recommended patterns, security guidelines, and performance tips
๐งฉ Key Capabilities #
Typed Storage Extensions #
// JSON operations with both normal and secure versions
await storageService.setJson('user_profile', userData);
await storageService.setSecureJson('auth_tokens', tokenData);
// DateTime and list operations
await storageService.setDateTime('last_login', DateTime.now());
await storageService.setStringList('interests', ['tech', 'music']);
Smart Network Client #
// JSON convenience methods
final users = await networkService.getJson('/users');
await networkService.postJson('/users', jsonBody: newUser);
// Automatic token management and refresh
final profile = await networkService.getJson('/protected/profile');
๐๏ธ Architecture #
Flutter Infra follows a layered architecture with clear separation of concerns:
- Application Layer: Your Flutter app, repositories, and services
- Flutter Infra Layer: StorageService, NetworkService, TokenManager
- Implementation Layer: Storage implementations, network clients, interceptors
- Platform Layer: SharedPreferences, FlutterSecureStorage, Hive, HTTP clients
๐ฑ Example App #
Check out the example directory for a complete Flutter app demonstrating:
- Default Usage: Basic storage and network operations
- Common Usage: Token management and API integration
- Advanced Usage: Custom configurations and interceptors
๐งช Testing #
dart test
The package includes comprehensive test coverage with unit tests, integration tests, and mock support for testing your own code.
๐ค Getting Help #
- ๐ Documentation: Browse the doc directory for detailed guides
- ๐ Issues: GitHub Issues
- ๐ฌ Discussions: GitHub Discussions
๐ License #
This project is licensed under the MIT License - see the LICENSE file for details.
Flutter Infra - Building robust Flutter applications with confidence! ๐