Flutter基础功能扩展插件flutter_base_plus的使用
Flutter基础功能扩展插件flutter_base_plus的使用
flutter_base_plus
是一个用于快速构建 Flutter 应用的基础功能扩展插件。它提供了多种实用工具和基类,帮助开发者更高效地管理应用的路由、状态、数据模型以及页面结构等。
插件功能概览
以下是 flutter_base_plus
的主要功能模块及其作用:
目录名称 | 功能 |
---|---|
animation | 基础转场动画库 |
base | 基类库 |
model | 基类库用到的数据模型 |
navigator | 路由操作工具库 |
page | 页面基类 |
router | 路由库 |
使用说明
1. 添加依赖
在 pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter_base_plus: ^1.0.0 # 替换为最新版本号
然后运行 flutter pub get
安装依赖。
2. 配置应用根组件
通过继承 BaseAppRoot
创建应用根组件,并配置路由、主题和其他选项。
示例代码
import 'package:flutter_base_plus/flutter_base_plus.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'app_routers.dart';
import 'dialog/custom_loading_widget.dart';
import 'dialog/custom_toast_widget.dart';
void main() {
// 初始化 Flutter 环境
WidgetsFlutterBinding.ensureInitialized();
runApp(MyApp());
}
class MyApp extends BaseAppRoot {
late final DateTime startDateTime;
MyApp({Key? key})
: super(
key: key,
config: AppConfig(
theme: ThemeData(
primarySwatch: Colors.blue,
),
routers: AppRouters().routers,
homeName: "page_1", // 设置默认首页路由名称
observers: [
FlutterSmartDialog.observer, // 添加路由观察者
TestNavigatorObserver(), // 自定义路由观察者
],
transitionBuilder: FlutterSmartDialog.init(
// 自定义默认 Toast 弹窗
toastBuilder: (String msg, AlignmentGeometry alignment) {
return CustomToastWidget(msg: msg, alignment: alignment);
},
// 自定义默认加载弹窗
loadingBuilder: (String msg, Color background) {
return CustomLoadingWidget(msg: msg, background: background);
},
),
),
) {
startDateTime = DateTime.now();
}
[@override](/user/override)
void buildFinishCallBack() {
debugPrint(
'MyApp.buildFinishCallBack:${DateTime.now().millisecondsSinceEpoch - startDateTime.millisecondsSinceEpoch} ms');
}
}
/// 测试用路由观察者
class TestNavigatorObserver extends NavigatorObserver {
[@override](/user/override)
void didPush(Route<dynamic> route, Route<dynamic>? previousRoute) {}
[@override](/user/override)
void didReplace({Route<dynamic>? newRoute, Route<dynamic>? oldRoute}) {}
[@override](/user/override)
void didRemove(Route<dynamic> route, Route<dynamic>? previousRoute) {}
[@override](/user/override)
void didPop(Route<dynamic> route, Route<dynamic>? previousRoute) async {}
}
3. 定义路由
创建一个文件 app_routers.dart
来定义路由表。
import 'package:flutter_base_plus/flutter_base_plus.dart';
class AppRouters {
static Map<String, WidgetBuilder> routers = {
"page_1": (context) => Page1(),
"page_2": (context) => Page2(),
};
}
4. 创建页面
创建两个简单的页面 Page1
和 Page2
。
Page1
import 'package:flutter/material.dart';
class Page1 extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Page 1")),
body: Center(
child: ElevatedButton(
onPressed: () {
Navigator.pushNamed(context, "page_2");
},
child: Text("Go to Page 2"),
),
),
);
}
}
Page2
import 'package:flutter/material.dart';
class Page2 extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Page 2")),
body: Center(
child: ElevatedButton(
onPressed: () {
Navigator.pop(context);
},
child: Text("Back to Page 1"),
),
),
);
}
}
5. 自定义弹窗
创建自定义的 CustomToastWidget
和 CustomLoadingWidget
。
CustomToastWidget
import 'package:flutter/material.dart';
class CustomToastWidget extends StatelessWidget {
final String msg;
final AlignmentGeometry alignment;
const CustomToastWidget({
Key? key,
required this.msg,
required this.alignment,
}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.all(8),
decoration: BoxDecoration(
color: Colors.black.withOpacity(0.8),
borderRadius: BorderRadius.circular(8),
),
alignment: alignment,
child: Text(
msg,
style: TextStyle(color: Colors.white),
),
);
}
}
CustomLoadingWidget
import 'package:flutter/material.dart';
class CustomLoadingWidget extends StatelessWidget {
final String msg;
final Color background;
const CustomLoadingWidget({
Key? key,
required this.msg,
required this.background,
}) : super(key: key);
[@override](/user/override)
Widget build(BuildContext context) {
return Container(
width: 100,
height: 100,
decoration: BoxDecoration(
color: background,
borderRadius: BorderRadius.circular(8),
),
child: Center(
child: Text(
msg,
style: TextStyle(color: Colors.white),
),
),
);
}
}
更多关于Flutter基础功能扩展插件flutter_base_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter基础功能扩展插件flutter_base_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_base_plus
是一个用于扩展 Flutter 基础功能的插件,它通常包含了一些常用的工具类、扩展方法、以及一些便捷的功能,以帮助开发者更高效地开发 Flutter 应用。以下是关于如何使用 flutter_base_plus
插件的一些基本介绍和示例。
1. 安装插件
首先,你需要在 pubspec.yaml
文件中添加 flutter_base_plus
插件的依赖:
dependencies:
flutter:
sdk: flutter
flutter_base_plus: ^1.0.0 # 请根据实际情况填写版本号
然后运行 flutter pub get
来安装依赖。
2. 导入插件
在你的 Dart 文件中导入 flutter_base_plus
:
import 'package:flutter_base_plus/flutter_base_plus.dart';
3. 使用插件功能
flutter_base_plus
插件可能包含以下一些常见功能:
3.1 工具类
插件可能提供了一些常用的工具类,例如 StringUtils
、DateUtils
等。
String formattedDate = DateUtils.formatDate(DateTime.now(), 'yyyy-MM-dd');
bool isValidEmail = StringUtils.isEmail('example@example.com');
3.2 扩展方法
插件可能为常见的 Flutter 类提供了扩展方法,例如 String
、Widget
等。
String str = 'hello world';
String capitalizedStr = str.capitalize(); // 'Hello world'
Widget container = Container().withPadding(EdgeInsets.all(16.0));
3.3 网络请求
插件可能封装了网络请求的功能,简化了 HTTP 请求的发送和响应处理。
var response = await HttpClient().get('https://api.example.com/data');
if (response.statusCode == 200) {
print('Response data: ${response.body}');
} else {
print('Request failed with status: ${response.statusCode}');
}
3.4 状态管理
插件可能提供了一些简单的状态管理工具,帮助开发者更轻松地管理应用状态。
class MyAppState extends BaseState {
int counter = 0;
void increment() {
counter++;
notifyListeners();
}
}
final myAppState = MyAppState();
// 在 Widget 中使用
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return StateBuilder(
state: myAppState,
builder: (context, state) {
return Text('Counter: ${state.counter}');
},
);
}
}
3.5 日志记录
插件可能提供了更便捷的日志记录功能。
Logger.log('This is a log message');
Logger.error('This is an error message');
4. 自定义配置
flutter_base_plus
插件可能允许你进行一些自定义配置,例如设置日志级别、网络请求的超时时间等。
Logger.setLevel(LogLevel.debug);
HttpClient.setTimeout(Duration(seconds: 30));
5. 示例代码
以下是一个简单的示例,展示了如何使用 flutter_base_plus
插件的一些功能:
import 'package:flutter/material.dart';
import 'package:flutter_base_plus/flutter_base_plus.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter Base Plus Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Formatted Date: ${DateUtils.formatDate(DateTime.now(), 'yyyy-MM-dd')}'),
Text('Capitalized String: ${'hello world'.capitalize()}'),
ElevatedButton(
onPressed: () async {
var response = await HttpClient().get('https://jsonplaceholder.typicode.com/posts/1');
if (response.statusCode == 200) {
Logger.log('Response data: ${response.body}');
} else {
Logger.error('Request failed with status: ${response.statusCode}');
}
},
child: Text('Fetch Data'),
),
],
),
),
),
);
}
}