Flutter基础功能模块插件base_module的使用
Flutter基础功能模块插件base_module的使用
base_module
是一个实用包,帮助开发者轻松创建新的屏幕和视图,这些屏幕和视图具备MVP项目结构和提供状态管理结构的能力。此外,基础类如 BaseScreen
和 BaseView
包含了一些基本属性,可以用来创建新的屏幕和单一视图。
在创建新的屏幕时,开发者需要添加标题、操作按钮、底部导航栏等元素。这些元素可以作为预设并开箱即用。根据需求,必须在基础类中自定义这些小部件。
示例代码
以下是使用 base_module
创建一个简单的应用的完整示例代码:
import 'package:base_module/base_utils/base_presenter.dart';
import 'package:base_module/base_utils/base_provider.dart';
import 'package:base_module/base_utils/base_screen/base_screen.dart';
import 'package:base_module/base_utils/base_view/base_view.dart';
import 'package:base_module/fab_utils/app_floating_actiona_button.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() {
runApp(const MyApplication());
}
class MyApplication extends StatelessWidget {
const MyApplication({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
),
home: HomeScreen(),
);
}
}
class HomeScreen extends BaseScreen<HomeProvider, HomePresenter> {
[@override](/user/override)
HomePresenter setPresenter() => HomePresenter();
[@override](/user/override)
HomeProvider setProvider() => HomeProvider();
// 自定义AppBar
[@override](/user/override)
AppBar? get customAppBar => AppBar(
title: Consumer<HomeProvider>(
builder: (context, provider, child) => Text(
provider.selectedNavigationIndex == 0
? "欢迎回家"
: "欢迎到工作"),
),
);
// 自定义浮动操作按钮
[@override](/user/override)
AppFloatingActionButton? get appFloatingActionButton =>
AppFloatingActionButton(
button: FloatingActionButton(
elevation: 0,
onPressed: () => basePresenter.showAlertDialog(),
child: const Icon(Icons.add),
),
location: FloatingActionButtonLocation.centerDocked);
// 创建视图
[@override](/user/override)
BaseView createView() {
return HomeView();
}
// 底部导航栏项
[@override](/user/override)
List<NavigationDestination>? get bottomNavBarItems => [
const NavigationDestination(
selectedIcon: Icon(Icons.home),
icon: Icon(Icons.home_outlined),
label: "首页"),
const NavigationDestination(
selectedIcon: Icon(Icons.home_repair_service_rounded),
icon: Icon(Icons.home_repair_service_outlined),
label: "工作"),
];
}
// 视图类
class HomeView extends BaseView {
[@override](/user/override)
Widget createView() {
return const Card(
child: Padding(
padding: EdgeInsets.all(10),
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Text(
"这是卡片视图。",
style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600),
),
],
),
Divider(
thickness: 2,
),
Text("4天"),
SizedBox(height: 4),
Text(
"这只是简单文本,用于向您说明系统中存在的问题。"),
],
),
),
);
}
}
// 提供者类
class HomeProvider extends BaseProvider {
int count = 0;
void updateCount(int count) {
this.count = count;
notifyListeners();
}
}
// 呈现器类
class HomePresenter extends BasePresenter<HomeProvider> {
// 显示警告对话框
showAlertDialog() {
showDialog(
context: context,
builder: (context) => AlertDialog(
title: const Text("警告!!!"),
content: const Text(
"这是一个示例对话框,用于解释如何显示对话框。"),
actions: [
FilledButton(
onPressed: () => Navigator.pop(context),
child: const Text("确定"))
],
),
);
}
}
更多关于Flutter基础功能模块插件base_module的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter基础功能模块插件base_module的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
base_module
是一个 Flutter 插件,通常用于提供一些基础的功能模块,帮助开发者快速构建应用。这个插件的具体功能可能因项目而异,但通常包括网络请求、数据存储、UI组件、工具类等基础功能。
以下是一个假设的 base_module
插件的使用示例,假设它提供了一些基础功能,如网络请求、本地存储、工具类等。
安装插件
首先,你需要在 pubspec.yaml
文件中添加 base_module
插件的依赖:
dependencies:
flutter:
sdk: flutter
base_module: ^1.0.0 # 假设版本号为1.0.0
然后运行 flutter pub get
来安装插件。
使用插件
1. 网络请求
假设 base_module
提供了一个网络请求的工具类 NetworkUtil
,你可以这样使用:
import 'package:base_module/base_module.dart';
void fetchData() async {
var response = await NetworkUtil.get('https://jsonplaceholder.typicode.com/posts');
if (response.statusCode == 200) {
print('Data: ${response.body}');
} else {
print('Failed to load data');
}
}
2. 本地存储
假设 base_module
提供了一个本地存储的工具类 StorageUtil
,你可以这样使用:
import 'package:base_module/base_module.dart';
void saveData() async {
await StorageUtil.saveString('key', 'value');
}
void getData() async {
String value = await StorageUtil.getString('key');
print('Saved value: $value');
}
3. 工具类
假设 base_module
提供了一些工具类,如 StringUtil
,你可以这样使用:
import 'package:base_module/base_module.dart';
void checkEmail() {
String email = 'test@example.com';
if (StringUtil.isEmail(email)) {
print('Valid email');
} else {
print('Invalid email');
}
}
4. UI组件
假设 base_module
提供了一些常用的UI组件,如 CustomButton
,你可以这样使用:
import 'package:flutter/material.dart';
import 'package:base_module/base_module.dart';
class MyHomePage extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Base Module Example'),
),
body: Center(
child: CustomButton(
onPressed: () {
print('Button Pressed');
},
text: 'Click Me',
),
),
);
}
}