scaffold_core 1.0.2
scaffold_core: ^1.0.2 copied to clipboard
A core library that provides basic components for Flutter applications.
Scaffold_Core - Flutter Core Components Library #
Overview #
Scaffold_Core is a foundational Flutter components library that provides core capabilities commonly used in application development, including network requests, utilities, and extension methods. It adopts a modular design that facilitates on-demand import, maintenance, and extension.
Installation #
Add the dependency to your pubspec.yaml:
dependencies:
scaffold_core: ^1.0.0
Or use Git dependency:
dependencies:
scaffold_core:
git:
url: https://github.com/happy-flutter/scaffold_core.git
Project Structure #
scaffold_core/lib/
├── core_extensions/ # Extension methods module
│ ├── color_extension.dart
│ ├── date_time_extension.dart
│ ├── future_extension.dart
│ └── string_extension.dart
├── core_network/ # Network request module
│ ├── core_network.dart
│ ├── exception.dart
│ ├── request.dart
│ ├── response.dart
│ ├── status_codes.dart
│ └── interceptors/
│ └── retry_interceptor.dart
└── core_utils/ # Utilities module
├── assets_picker_util.dart
├── connectivity_util.dart
├── crypt_util.dart
├── image_compress_util.dart
├── image_util.dart
├── info_util.dart
├── lifecycle_util.dart
├── link_util.dart
├── loading_util.dart
├── log_util.dart
├── permission_util.dart
├── storage_util.dart
├── throttle_util.dart
└── video_compress_util.dart
Module Description #
1. core_extensions - Extension Methods Module #
Provides extension methods for commonly used data types, enhancing the readability and convenience of original types.
File Description
-
color_extension.dart: Color utilities and
Colorextensions- Random color, HEX/RGB/HSL construction and conversion
- Brightness, saturation, hue adjustment and color mixing
- Dark/light detection, inverse color, grayscale, transparency control
-
date_time_extension.dart: DateTime extensions
- Multiple date/time formatting (
YYYY-MM-DD,HH:mm:ss,YYYY-MM-DD HH:mm:ss, etc.) - Chinese formatting (year-month-day, weekday, etc.)
- Relative time display (minutes ago, hours ago, days ago, etc.)
- Today/Yesterday/This week/This month/This year detection, weekday and weekend detection
- Workday addition/subtraction, age calculation, days passed/remaining in the current year, etc.
- Multiple date/time formatting (
-
future_extension.dart: Future extensions
- Adds minimum execution duration to
Future(milliseconds/seconds/customDuration)
- Adds minimum execution duration to
-
string_extension.dart: String extensions
- Empty check, character count, display width calculation (mixed Chinese and English)
- Filtering and truncation (by length/display width, safe substring, reverse, byte length, etc.)
- Naming style conversion (camel / Pascal / snake) and capitalize first word
- Numeric conversion (
toDouble/toInt), amount formatting (CNY, USD formats included) - Common regex validation (phone number, email, ID card, URL, date, IP, QQ, username, etc.)
- Random string generation
2. core_network - Network Request Module #
A network request framework encapsulated based on Dio, providing unified and configurable network access capabilities.
File Description
-
core_network.dart: Network client core class
NetworkClientsingleton management- Supports common HTTP methods such as GET / POST / PUT / DELETE
- Supports file upload, download and progress callbacks
- Integrated retry interceptor and logging capabilities
-
exception.dart: Network exception handling
NetworkExceptioncustom exception system- Unified encapsulation of timeout, cancellation, connection errors, status code exceptions, etc.
-
request.dart: Request encapsulation
NetworkRequestrequest builder class- Unified management of baseUrl, path, parameters, headers, timeout and other configurations
-
response.dart: Response encapsulation
NetworkResponseunified response model- Convenient for upper-layer business to do unified data processing
-
status_codes.dart: HTTP status code constants
- Includes common HTTP status codes for semantic usage
-
interceptors/retry_interceptor.dart: Retry interceptor
- Supports automatic retry when network request fails
- Configurable retry count and strategy
3. core_utils - Utilities Module #
Encapsulates common business-agnostic general utilities for easy reuse across different projects.
File Description
-
assets_picker_util.dart: Media picker utilities
- Camera photo and video capture (resolution optional)
- Multiple image/video selection from gallery, automatically corrects file extensions
-
connectivity_util.dart: Network connectivity utilities
- Detects current network status
- Listens for network changes with callbacks
-
crypt_util.dart: Encryption utilities
- Common hashing/encryption algorithm encapsulation
-
image_compress_util.dart: Image compression utilities
- Size and quality compression based on
flutter_image_compress - Supports multiple input forms from memory, file, resources, etc.
- Size and quality compression based on
-
image_util.dart: Image processing utilities
- Image loading, size processing, caching, etc. (subject to implementation)
-
info_util.dart: Device info utilities
- Get device information and application version, etc.
-
lifecycle_util.dart: Lifecycle utilities
- Application lifecycle listening and handling
-
link_util.dart: Link handling utilities
- Open external URLs, handle deep links, etc.
-
loading_util.dart: Loading indicator utilities
- Unified global loading display and dismissal
-
log_util.dart: Logging utilities
- Log encapsulation based on Talker
- Supports different log levels and network log interception
-
permission_util.dart: Permission management utilities
- Permission request, checking and result handling
-
storage_util.dart: Local storage utilities
- Key-value storage based on SharedPreferences
- Object serialization/deserialization and caching
-
throttle_util.dart: Throttle and debounce utilities
- Supports function-level throttling, specified time throttling
- Supports debounce operations
- Supports Future throttle and debounce
-
video_compress_util.dart: Video compression utilities
- Video compression based on
v_video_compressor - Supports multi-level quality configuration, progress listening and thumbnail generation
- Video compression based on
Main Dependencies #
- dio: Network request library
- talker_flutter / talker_dio_logger / talker_logger: Logging system
- shared_preferences: Local storage
- path_provider: Path retrieval
- permission_handler: Permission management
- crypto / encrypt: Encryption library
- flutter_svg: SVG rendering
- cached_network_image: Network image caching
- package_info_plus: Application information
- device_info_plus: Device information
- app_settings: Open system settings page
- map_launcher: Launch map navigation
- connectivity_plus: Network status
- url_launcher: URL launcher
- app_links: Deep links
- flutter_easyloading: Loading indicator
- wechat_assets_picker / wechat_camera_picker: Media picking and capturing
- flutter_image_compress: Image compression
- v_video_compressor: Video compression
Usage Examples #
Network Request #
// Initialize network client
NetworkClient.init(
baseUrl: 'https://api.example.com',
connectTimeout: const Duration(seconds: 30),
);
// Make a request
final response = await NetworkClient().fetch(
NetworkRequest(
apiPath: '/users',
method: RequestMethod.get,
),
);
Storage Operations #
// Initialize storage
await StorageUtil.init();
// Save data
await StorageUtil.setValue('key', 'value');
await StorageUtil.setObject('user', {'name': 'John'});
// Read data
final value = StorageUtil.getValue('key');
final user = StorageUtil.getObject('user');
Logging #
// Log messages
LogUtil.info('This is an info log');
LogUtil.error('This is an error log');
LogUtil.debug('This is a debug log');
String Extensions #
// Using string extensions
final phone = '13800138000';
if (phone.isMobileExact()) {
print('Valid phone number');
}
final amount = '1234.56';
print(amount.toMoneyFormat()); // Output: 1,234.56
Author #
License #
Scaffold_Core is available under the MIT license. See the LICENSE file for more info.