Flutter UI组件插件bfastui的使用
Flutter UI组件插件bfastui的使用
BFastUI - 简介
BFastUI 是一个基于 Flutter 的状态和 UI 架构库,它受到了 flutter_modular
的启发,并使用了 ChangeNotifier
模式来管理状态。
安装
在项目的 pubspec.yaml
文件中添加 bfastui
作为依赖项:
dependencies:
bfastui: any
你也可以直接从 Git 仓库中获取源码以尝试最新的功能和修复:
dependencies:
bfastui:
git:
url: https://github.com/fahamutech/bfast-ui-flutter.git
模块
在应用中组织你的领域时,模块是一个顶层抽象。你可以将应用划分为不同的模块。
主模块 (MainModule)
主模块是应用的启动模块,只在应用中定义一次。你需要实现 initRoutes
和 initStates
方法。
initRoutes
:添加模块将使用的页面的所有路由。initStates
:添加模块将使用的所有状态。
class MyAppModule extends MainModuleAdapter {
[@override](/user/override)
List<RouterAdapter> initRoutes(String moduleName) => [];
[@override](/user/override)
List<StateAdapter> initStates(String moduleName) => [];
}
子模块 (ChildModule)
子模块用于封装特定的业务逻辑。你需要实现以下方法:
initRoutes
:添加模块将使用的页面的所有路由。initStates
:添加模块将使用的所有状态。moduleName
:返回模块名称,可以是任意字符串。
class ProfileModule extends ChildModuleAdapter {
[@override](/user/override)
List<RouterAdapter> initRoutes(String moduleName) => [];
[@override](/user/override)
List<StateAdapter> initStates(String moduleName) => [];
[@override](/user/override)
String moduleName() => 'profile-module';
}
页面 (Page)
页面是你在手机上看到的内容,例如登录页面。页面属于特定的模块,并通过 URL 导航到。页面可以有一个或多个组件,使整个页面具有功能性。要创建一个页面,你需要扩展 PageAdapter
并实现 build
方法,该方法返回一个表示该页面的 Widget
。
-
build(var args)
:必须提供实现。args
有以下属性:final Map<String, dynamic> params; final Map<String, dynamic> queryParams; final dynamic data;
class MyHomePage extends PageAdapter {
[@override](/user/override)
Widget build(args) {
return Scaffold(
body: Container(
color: Colors.red,
child: Column(
children: [
consumerComponent<MyState>(
builder: (context, state) => Text('${state?.count}'),
),
selectorComponent<MyState, int>(
selector: (s) => s?.count ?? 0,
builder: (c, data) => Text('$data'),
)
],
),
),
);
}
}
状态 (State)
状态是当前视图的信息。状态是一个 ChangeNotifier
类,用于底层的 Provider 状态管理。
class MyState extends StateAdapter {
int count = 0;
increase() {
count += 1;
notifyListeners();
}
decrement() {
count -= 1;
notifyListeners();
}
[@override](/user/override)
void onDispose() {}
}
要通知监听器更改,只需调用 notifyListeners()
,就像在 ChangeNotifier
类中一样。你可以使用 active widget
(消费者或选择器)来使用状态。我们提供了生产者方法来生成消费者小部件或选择器组件。
路由 (Route)
路由携带应用中导航到何处的信息,以及是否允许某人访问。你可以导航到另一个页面或模块。
路由守卫 (Route Guard)
为了创建一个路由守卫:
class MyRouteAuthGuard extends RouterGuardAdapter {
[@override](/user/override)
Future<bool> canActivate(String url) {
// TODO: 实现 canActivate
throw UnimplementedError();
}
}
当 canActivate
解析为 true
时,导航到的页面或模块将被激活;否则,如果可用,则会返回到前一个路由。
完整应用示例
import 'package:bfastui/adapters/main_module.dart';
import 'package:bfastui/adapters/page.dart';
import 'package:bfastui/adapters/router.dart';
import 'package:bfastui/adapters/state.dart';
import 'package:bfastui/controllers/component.dart';
import 'package:bfastui/controllers/module.dart';
import 'package:flutter/material.dart';
class MyHomePage extends PageAdapter {
[@override](/user/override)
Widget build(args) {
return Scaffold(
body: Container(
color: Colors.red,
child: Column(
children: [
consumerComponent<MyState>(
builder: (c, state) => Text('${state?.count}'),
),
selectorComponent<MyState, int>(
selector: (s) => s?.count ?? 0,
builder: (c, data) => Text('$data'),
)
],
),
),
);
}
}
class MyState extends StateAdapter {
int count = 0;
increase() {
count += 1;
notifyListeners();
}
decrement() {
count -= 1;
notifyListeners();
}
[@override](/user/override)
void onDispose() {}
}
class MyAppModule extends MainModuleAdapter {
[@override](/user/override)
List<RouterAdapter> initRoutes(String moduleName) => [
RouterAdapter('/home', page: (c, _) => MyHomePage()),
];
[@override](/user/override)
List<StateAdapter> initStates(String moduleName) => [
MyState(),
];
}
void main() {
runApp(
bfastUiApp(
module: MyAppModule(),
component: MaterialApp(
initialRoute: '/home',
),
),
);
}
更多关于Flutter UI组件插件bfastui的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter UI组件插件bfastui的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
bfastui
是一个用于快速构建 Flutter 应用的 UI 组件库。它提供了一系列预定义的 UI 组件,帮助开发者快速搭建用户界面,减少重复代码的编写。以下是 bfastui
的基本使用方法和一些常见的组件示例。
1. 安装 bfastui
首先,你需要在 pubspec.yaml
文件中添加 bfastui
依赖:
dependencies:
flutter:
sdk: flutter
bfastui: ^1.0.0 # 请根据实际情况使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 导入 bfastui
在需要使用 bfastui
的 Dart 文件中导入库:
import 'package:bfastui/bfastui.dart';
3. 使用 bfastui
组件
bfastui
提供了多种常用的 UI 组件,以下是一些常见组件的使用示例。
3.1. BfastButton
BfastButton
是一个自定义的按钮组件,支持多种样式。
BfastButton(
text: 'Click Me',
onPressed: () {
print('Button Clicked!');
},
style: BfastButtonStyle.primary,
);
3.2. BfastTextField
BfastTextField
是一个自定义的文本输入框组件,支持验证和提示。
BfastTextField(
hintText: 'Enter your name',
onChanged: (value) {
print('Text changed: $value');
},
validator: (value) {
if (value.isEmpty) {
return 'Please enter some text';
}
return null;
},
);
3.3. BfastCard
BfastCard
是一个卡片组件,可以包含任何子组件。
BfastCard(
child: Column(
children: [
Text('Card Title'),
Text('This is a card content.'),
],
),
);
3.4. BfastListTile
BfastListTile
是一个列表项组件,通常用于列表中的每一项。
BfastListTile(
leading: Icon(Icons.person),
title: Text('John Doe'),
subtitle: Text('Software Developer'),
trailing: Icon(Icons.arrow_forward),
onTap: () {
print('List Tile Clicked');
},
);
4. 自定义主题
bfastui
允许你自定义主题,以适应你的应用风格。
BfastTheme(
data: BfastThemeData(
primaryColor: Colors.blue,
accentColor: Colors.orange,
textTheme: TextTheme(
bodyText1: TextStyle(fontSize: 16),
bodyText2: TextStyle(fontSize: 14),
),
),
child: MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('BfastUI Example'),
),
body: Center(
child: BfastButton(
text: 'Themed Button',
onPressed: () {
print('Themed Button Clicked!');
},
),
),
),
),
);