Flutter多功能工具插件master_utility的使用

发布于 1周前 作者 eggper 来自 Flutter

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

1 回复

更多关于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方法,以便在运行时检查网络状态。

注意

  1. 实际插件方法:请确保你查阅master_utility插件的官方文档,以了解实际可用的方法和属性。
  2. 错误处理:在实际项目中,务必添加适当的错误处理逻辑,以提高应用的健壮性。
  3. 权限:如果插件需要特定权限(如访问设备信息或网络状态),请确保在AndroidManifest.xmlInfo.plist中声明这些权限。

希望这能帮助你在Flutter项目中成功集成和使用master_utility插件!

回到顶部