Flutter架构设计插件codestage_architecture的使用
Flutter架构设计插件codestage_architecture的使用
Features
该包包含了Codestage的Flutter应用架构结构。它包含各种类、功能性工具和实用程序,以帮助组织和结构化您的项目。此包包含以下内容:
- 一些结构类(包含主颜色方案和尺寸映射)
- 一些视图应该扩展的类类型(组件类型、列表和增强型枚举类型)
- 多个枚举,用于表单验证错误检查、字符串操作工具、安全存储实现、系统本地化等。
这些将在下面的描述中详细介绍。
如何使用该包
结构化方法
通常情况下,项目应按功能模块进行组织,例如引导页面、授权流程、用户仪表板、设置、功能模块等。对于每个功能模块,您应该有一个服务类和服务列表类,它们分别继承自CdsService
和CdsListing
类型。继续解释时,一个Flutter页面/组件/有状态小部件应该扩展CdsComponent
类,如示例所示。
class WidgetClassInterfaceComponent extends CdsComponent<Service, Listing> {
void someFunction() {
// 调用列表中的方法
super.listings?.listing1();
// 调用服务中的方法
super.service?.api();
}
}
// 服务类
class Service extends CdsService {
Service() : super(baseUrl: 'https://alpha-vantage.p.rapidapi.com');
Future<http.Response> api() {
// 配置请求参数
super.configureServiceForRequest([], 'query');
// 执行CRUD操作
return super.request(CrudOperationType.getAll);
}
}
// 列表类
class Listing extends CdsListing {
Widget listing1() {
return const Text('Hello');
}
Widget listing2() {
return const Text('Hello');
}
Widget listing3() {
return const Text('Hello');
}
}
CdsComponent
需要两个参数:
- 一个服务类,该类必须扩展
CdsService
- 一个列表类,该类必须扩展
CdsListing
类型。
通过这种方式,您可以直接调用服务的方法,例如:
super.service?.functionToCall()
或者调用列表的方法,例如:
super.listings?.listing1()
包含的实用工具
1. 应用的颜色方案
应用程序的颜色方案应该是一个可以在任何地方访问的类,并通过静态调用方式实现。CdsAppColorScheme
实现了三个变量:
mainColor
:应用程序的主要颜色secondaryColor
:应用程序的次要颜色otherColors
:一个包含颜色名称及其对应值的映射表
为了实现这一点,可以扩展该类并创建一个静态引用控制器。然后可以通过示例访问它们:
class AppColors extends CdsAppColorScheme {
AppColors({required super.mainColor, required super.secondaryColor, required super.otherColors});
// 创建静态实例
static AppColors scheme = AppColors(
mainColor: const Color.fromARGB(255, 255, 162, 0), // 主色
secondaryColor: const Color.fromARGB(255, 0, 0, 0), // 次色
otherColors: {
'grey': const Color.fromARGB(255, 255, 0, 0), // 灰色
'blue': const Color.fromARGB(255, 0, 75, 255) // 蓝色
});
}
void someFunction() {
// 访问灰色
Color textColor = AppColors.scheme.otherColors['grey']!;
// 访问主要颜色
Color mainTextColor = AppColors.scheme.mainColor;
}
2. 应用的尺寸和其他相关内容
CdsDimensions
类包含一个简单的键值对映射表,其中键是字符串(表示属性名称),值是动态类型,可以放置任何内容。
示例如下:
class Dimensions extends CdsDimensions {
Dimensions({required super.dimensionsMap});
// 创建静态实例
static Dimensions dimensions = Dimensions(dimensionsMap: {'size': '40', 'number': 40});
}
void someFunction() {
double height = Dimensions.dimensions.dimensionsMap['size']!;
}
3. 错误检查器
当使用表单验证某些内容时,需要一个通用的错误检查类。因此,我们创建了一个名为FieldValidationOutput
的类,该类包含一条错误消息以及布尔变量用于其他布尔检查。以下是其使用的示例:
class ErrorChecker {
// 验证名称字段
static ErrorValidationError validateName(String name) {
if (name.trim().isEmpty) {
return ErrorValidationError(message: 'Please complete this field', isValid: false);
}
return ErrorValidationError(message: null, isValid: true);
}
}
// 错误验证结果类
class ErrorValidationError extends FieldValidationOutput {
ErrorValidationError({required super.message, required super.isValid});
}
4. 安全数据存储
令牌和其他敏感信息可以通过CdsKeyChainStorageInterface
存储,这是由Flutter开发团队创建的SecureStorage
接口的接口。
此类通过为其主要方法添加功能调用来丰富第一个类。因此,您可以在其中找到read
、write
、delete
和deleteAll
函数。
在您的项目中,您可以设置一个扩展了CdsKeychainStorageInterface
的SecureStorage
类,并创建一个简单的静态构造函数,如示例所示。然后,您可以在任何地方通过SecureStorage.storage.FUNCTION_TO_CALL
与存储交互。
class SecureStorage extends CdsKeychainStorageInterface {
SecureStorage();
// 创建静态实例
static SecureStorage storage = SecureStorage();
}
更多关于Flutter架构设计插件codestage_architecture的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html