Skip to main content

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
}