tasco_utils
Package tasco_utils là lớp nền tảng thấp nhất (Foundation Layer) trong hệ thống thư viện của Tasco App Framework. Package này độc lập hoàn toàn và không phụ thuộc vào bất kỳ package nội bộ nào khác.
1. Các thành phần chính
- Formatters: Hỗ trợ định dạng tiền tệ, ngày tháng năm theo chuẩn hiển thị doanh nghiệp.
- Validators: Các biểu thức chính quy (Regex) và tiện ích kiểm tra tính hợp lệ của số điện thoại Việt Nam, Email, biển số xe, căn cước công dân (CCCD).
- Extensions: Các hàm mở rộng hữu ích cho
String,DateTime,BuildContext, giúp tối giản hóa cú pháp viết code hàng ngày. - LoadingStatus: Enum trạng thái bất đồng bộ chuẩn hóa cho các BLoC/Cubit:
enum LoadingStatus { initial, loading, success, failure }
2. Hướng dẫn sử dụng
Sử dụng LoadingStatus trong Quản lý trạng thái BLoC
Thay vì định nghĩa nhiều biến boolean (isLoading, isError, v.v.), hãy sử dụng LoadingStatus:
// Trạng thái của Cubit
class ContractState extends Equatable {
final LoadingStatus status;
final List<Contract> contracts;
final Object? error;
const ContractState({
this.status = LoadingStatus.initial,
this.contracts = const [],
this.error,
});
ContractState copyWith({
LoadingStatus? status,
List<Contract>? contracts,
Object? error,
}) {
return ContractState(
status: status ?? this.status,
contracts: contracts ?? this.contracts,
error: error ?? this.error,
);
}
@override
List<Object?> get props => [status, contracts, error];
}
Sử dụng Formatters và Extensions
import 'package:tasco_utils/tasco_utils.dart';
void main() {
// Định dạng tiền tệ VND
double amount = 1500000;
print(amount.toVnd()); // Kết quả: 1.500.000 đ
// Kiểm tra số điện thoại hợp lệ
String phone = '0987654321';
if (phone.isValidVietnamesePhoneNumber()) {
print('Số điện thoại hợp lệ');
}
// Định dạng ngày tháng
DateTime now = DateTime.now();
print(now.toStandardString()); // Kết quả dạng: DD/MM/YYYY
}