Flutter多功能工具插件master_utility的使用
Flutter多功能工具插件master_utility的使用
master_utility
是一个功能强大的Flutter插件,提供了一系列实用工具来简化开发过程。本文将详细介绍如何在Flutter项目中使用该插件,并提供一些示例代码。
支持平台
- Android
- iOS
如何添加到项目中
在 pubspec.yaml
文件中添加以下依赖:
dependencies:
master_utility: ^latest_version
记得替换 ^latest_version
为实际的最新版本号。
导入包
在需要使用的文件中导入包:
import 'package:master_utility/master_utility.dart';
使用方法
初始化和设置主应用
在 main.dart
中初始化并设置主应用:
import 'package:flutter/material.dart';
import 'package:master_utility/master_utility.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await PreferenceHelper.init(encryptionKey: "your-encryption-key");
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MasterUtilityMaterialApp(
title: 'Example App',
home: ExampleView(),
);
}
}
功能点介绍及示例
键盘视图助手
用于显示“完成”按钮的键盘视图:
FocusNode focusNode = FocusNode();
// 在文本字段中使用
AppTextField(
focusNode: focusNode,
label: "TextField to View Done Keyboard",
showDoneKeyboard: true, // 默认情况下done view为false
);
导航助手
简化页面导航:
NavigationHelper.navigatePop();
NavigationHelper.navigatePush(route: routeName());
NavigationHelper.navigatePushReplacement(route: routeName());
NavigationHelper.navigatePushRemoveUntil(route: routeName());
尺寸助手
动态调整尺寸:
SizeHelper.setMediaQuerySize();
Container(
width: 0.03.w, // 它将占据屏幕宽度的30%
height: 0.03.h, // 它将占据屏幕高度的30%
);
Text('Sizer Helper', style: TextStyle(fontSize: 5.5.fs));
图像选择助手
选择图像或视频:
final result = await ImagePickerHelper.multiMediaPicker();
// 自定义媒体选择器
final result = await ImagePickerHelper.customMediaPicker(
pickerActionType: PickerActionType.camera
);
日期时间助手
格式化日期时间:
DateTime.now().toCustomFormatter(formatter: DateTimeFormatter.HOUR_MINUTE);
Toast助手
显示自定义Toast消息:
showToast(message: "Default Toast");
showCustomToast(
message: "Custom Toast",
backgroundColor: Colors.red,
textColor: Colors.white,
fontSize: 16.0,
gravity: ToastGravity.BOTTOM
);
日志助手
记录日志信息:
LogHelper.logInfo("add log here");
LogHelper.logSuccess("add log here");
LogHelper.logWarning("add log here");
LogHelper.logError("add log here");
对话框助手
显示对话框和动作表单:
DialogHelper.showActionSheet<PickerActionType>(
actions: const [
SheetAction(key: PickerActionType.camera, label: "Camera"),
SheetAction(key: PickerActionType.gallery, label: "Gallery"),
],
);
DialogHelper.showCustomAlertDialog(
barrierDismissible: false,
builder: (BuildContext context, widget) {
return AlertDialog(
title: const Text("No Internet"),
content: const Text("Check your internet connection."),
actions: [
ElevatedButton(
onPressed: () { Navigator.pop(context); },
child: const Text("Try Again")
)
],
);
}
);
缓存网络图像助手
缓存和显示网络图像:
AppNetworkImage(
url: imageUrl,
errorWidget: (p0, p1, p2) => Icon(Icons.error),
);
验证助手
验证输入数据:
validator: (v) => ValidationHelper.validateEmail(v);
API助手
进行API调用:
dioClient.setConfiguration(APIEndpoints.baseUrl);
Future<void> getApiCall() async {
final request = APIRequest(
url: url,
methodType: MethodType.GET,
);
final response = await APIService().GetApiResponse(request, apiResponse: (dynamic data) {
return Data.fromJson(data);
});
if (response.hasError) {
ToastHelper.showCustomToast(backgroundColor: Colors.red, message: response.message.toString());
} else {
_newData = response.data;
}
}
共享偏好助手
存储和获取共享偏好数据:
await PreferenceHelper().setStringPrefValue(key: key, value: value);
String getValue = await PreferenceHelper().getStringPrefValue(key: key);
图像裁剪助手
裁剪图像:
croppedImage = await ImageCropperHelper.cropImage(imagePath: fileResult.path);
LogHelper.logInfo("croppedImage result $croppedImage");
读取更多文本助手
实现展开和折叠文本:
ReadMoreTextHelper(
'Flutter is Google’s mobile UI open source framework...',
trimLines: 2,
colorClickableText: Colors.blue,
trimMode: TrimMode.Line,
trimCollapsedText: 'Show more',
trimExpandedText: 'Show less',
moreStyle: TextStyle(fontSize: 14, fontWeight: FontWeight.bold),
);
双击冗余助手
防止双击事件:
ElevatedButton(
onPressed: () {
DoubleClickReduntHelper.handleDoubleClick();
ToastHelper.showToast(message: "Default Toast");
},
child: const Text("Show Default Toast"),
);
权限处理助手
请求权限并处理回调:
PermissionHandlerService.handlePermissions(
type: PermissionType.PHOTO,
permissionDeniedDialog: () {
return showDialog(
context: context,
builder: (context) {
return const AlertDialog(title: Text("Custom Dialog"));
},
);
},
callBack: () async {
final fileResult = await ImagePickerHelper.customMediaPicker(pickerActionType: PickerActionType.gallery);
LogHelper.logInfo("result $fileResult");
if (fileResult != null) {
croppedImage.value = await ImageCropperHelper.cropImage(imagePath: fileResult.path);
LogHelper.logInfo("croppedImage result $croppedImage");
}
}
);
以上是 master_utility
插件的主要功能和使用示例。通过这个插件,您可以大大简化Flutter应用的开发流程,提高开发效率。希望这些内容对您有所帮助!
更多关于Flutter多功能工具插件master_utility的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter多功能工具插件master_utility的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中集成和使用master_utility
插件的详细步骤以及一个基本的代码示例。假设你已经有一个Flutter项目,并且希望添加并使用master_utility
插件来实现一些多功能工具操作。
1. 添加依赖
首先,你需要在pubspec.yaml
文件中添加master_utility
插件的依赖。如果master_utility
是一个假设的插件名称,并且实际中并不存在,请替换为实际存在的插件。
dependencies:
flutter:
sdk: flutter
master_utility: ^x.y.z # 替换为实际的版本号
然后,运行以下命令来安装依赖:
flutter pub get
2. 导入插件
在你需要使用master_utility
功能的Dart文件中,导入该插件:
import 'package:master_utility/master_utility.dart';
3. 使用插件功能
以下是一个假设的master_utility
插件提供的一些功能,并用代码示例展示如何使用它们。
示例功能:设备信息获取
import 'package:flutter/material.dart';
import 'package:master_utility/master_utility.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String deviceInfo = '';
@override
void initState() {
super.initState();
// 调用插件获取设备信息
_getDeviceInfo();
}
Future<void> _getDeviceInfo() async {
try {
// 假设插件有一个名为getDeviceDetails的方法
var deviceDetails = await MasterUtility.getDeviceDetails();
setState(() {
deviceInfo = 'Device Name: ${deviceDetails.name}\n'
'Device Model: ${deviceDetails.model}\n'
'OS Version: ${deviceDetails.osVersion}';
});
} catch (e) {
setState(() {
deviceInfo = 'Error fetching device info: $e';
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Device Information',
style: TextStyle(fontSize: 24),
),
SizedBox(height: 20),
Text(
deviceInfo,
style: TextStyle(fontSize: 18),
),
],
),
),
);
}
}
示例功能:网络状态检查
Future<void> _checkNetworkStatus() async {
try {
// 假设插件有一个名为isNetworkAvailable的方法
bool isConnected = await MasterUtility.isNetworkAvailable();
setState(() {
if (isConnected) {
deviceInfo = 'Network is available.';
} else {
deviceInfo = 'Network is not available.';
}
});
} catch (e) {
setState(() {
deviceInfo = 'Error checking network status: $e';
});
}
}
你可以在你的_MyHomePageState
类中添加一个按钮来调用_checkNetworkStatus
方法,以便在运行时检查网络状态。
注意
- 实际插件方法:请确保你查阅
master_utility
插件的官方文档,以了解实际可用的方法和属性。 - 错误处理:在实际项目中,务必添加适当的错误处理逻辑,以提高应用的健壮性。
- 权限:如果插件需要特定权限(如访问设备信息或网络状态),请确保在
AndroidManifest.xml
和Info.plist
中声明这些权限。
希望这能帮助你在Flutter项目中成功集成和使用master_utility
插件!