Flutter插件yizz_plugin的介绍及使用
yizz_plugin 0.0.4
Flutter常用工具类
使用
在程序入口需要初始化service服务:
initServices() async {
print('starting services ...');
await Get.putAsync(() => AppSpService().init()); // 初始化Sp服务
await Get.putAsync(() => AppPackageService().init()); // 初始化包管理服务
Get.put(HttpClient(dioConfig: HttpConfig(baseUrl: ""))); // 初始化Http客户端
print('All services started...');
}
Extension 基础类扩展
StringExtension
/// 判断是否是邮箱
bool isEmail() {
String regexEmail = '[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}';
return RegExp(regexEmail).hasMatch(this);
}
/// 判断是否手机号
bool isMobile() {
return RegExp(r'^((13[0-9])|(14[5,7,9])|(15[^4])|(18[0-9])|(17[0,1,3,5,6,7,8])|(19)[0-9])\d{8}$').hasMatch(this);
}
/// string 转 int
int toInt() {
return int.parse(this);
}
/// string 转 double
double toDouble() {
return double.parse(this);
}
WidgetExtension
/// 添加间距
Widget padding(EdgeInsetsGeometry padding) {
return Padding(
child: this,
padding: padding,
);
}
/// 添加点击事件
Material gesture({
GestureTapCallback? onTap,
GestureTapCallback? onDoubleTap,
GestureLongPressCallback? onLongPress,
}) {
return Material(
child: InkWell(
child: this,
onTap: onTap,
onDoubleTap: onDoubleTap,
onLongPress: onLongPress,
),
);
}
Global
全局属性方法
Http
网络请求封装
Future<HttpResponse> get(String uri,
{Map<String, dynamic>? queryParameters,
Options? options,
CancelToken? cancelToken,
ProgressCallback? onReceiveProgress,
HttpTransformer? httpTransformer,
bool isShowLoading = true}) async {
try {
if (isShowLoading) EasyLoading.show(status: 'loading...'); // 显示加载动画
var response = await _dio.get(
uri,
queryParameters: queryParameters,
options: options,
cancelToken: cancelToken,
onReceiveProgress: onReceiveProgress,
);
if (isShowLoading) EasyLoading.dismiss(); // 隐藏加载动画
return handleResponse(response, httpTransformer: httpTransformer);
} on Exception catch (e) {
return handleException(e);
}
}
调用示例
static Future<HttpResponse<LotEntity>> lotInfo(CancelToken? cancelToken, {Map<String, dynamic>? params}) async {
var response = await Get.find<HttpClient>().get<LotEntity>(
'esbrest/RestService/postrequest',
data: RequestUtil.formatJsonDataParameters(funcName: 'XN.XNLOTQUERY', parame: params),
cancelToken: cancelToken
);
return response;
}
Service
工具服务,全局调用
Util
常用工具类封装
DateUtil 时间处理工具类
DatePickerUtil 时间选择控件工具
DirectoryUtil 路径工具类
getTemporaryDirectory
设备上未备份的临时目录的路径,适用于存储下载文件的缓存。
getApplicationSupportDirectory
应用程序可以在其中放置应用程序支持文件的目录的路径。
getApplicationDocumentsDirectory
应用程序可能在其中放置用户生成的数据或应用程序无法重新创建的数据的目录路径。
getExternalStorageDirectory
应用程序可以访问顶级存储的目录的路径。
EncryptUtil 加解密工具类
ImageUtil 获取图片宽高工具类
JsonUtil Json工具类
LogUtil Log工具类
ObjectUtil 对象工具类
PickerUtil 图片选择工具类
RegexUtil 正则数据验证工具类
SpUtil sharedpreferences工具类
TextUtil 文本工具类
DayFormat 时间格式处理工具类
TimerUtil 定时器工具类
WidgetUtil Widget工具类 获取Rect,监听渲染
Widget
常用样式控件
示例代码
example/lib/main.dart
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:wechat_assets_picker/wechat_assets_picker.dart';
import 'package:yizz_plugin/tool/global/global_method.dart';
import 'package:yizz_plugin/tool/utils/picker_util.dart';
import 'package:yizz_plugin/yizz_plugin.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _platformVersion = 'Unknown';
[@override](/user/override)
void initState() {
super.initState();
initPlatformState();
}
// 平台消息初始化
Future<void> initPlatformState() async {
String platformVersion;
try {
platformVersion = await YizzPlugin.platformVersion ?? 'Unknown platform version';
} on PlatformException {
platformVersion = 'Failed to get platform version.';
}
if (!mounted) return;
setState(() {
_platformVersion = platformVersion;
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: Center(
child: Column(
children: [
Text('Running on: $_platformVersion\n'),
ElevatedButton(onPressed: () {
PickerUtil.selectImage(); // 单选图片
}, child: Text('单选')),
ElevatedButton(onPressed: () {
PickerUtil.selectMultiImage(); // 多选图片
}, child: Text('多选')),
ElevatedButton(onPressed: () {
PickerUtil.takePhotoImage(); // 打开相机拍照
}, child: Text('相机')),
ElevatedButton(onPressed: () {
PickerUtil.selectVido(); // 选择视频
}, child: Text('选择视频')),
TestButton(),
ElevatedButton(onPressed: () {
showToast('dsdsdsdsdsdsd'); // 测试Toast
}, child: Text('测试')),
],
),
),
),
);
}
}
class TestButton extends StatefulWidget {
const TestButton({Key? key}) : super(key: key);
[@override](/user/override)
_TestButtonState createState() => _TestButtonState();
}
class _TestButtonState extends State<TestButton> {
late AssetEntity entity;
int i = 1;
[@override](/user/override)
Widget build(BuildContext context) {
return Column(
children: [
ElevatedButton(onPressed: () async {
showDialogss(); // 弹窗示例
}, child: Text('Wechat')),
if (i == 2)
Image(image: AssetEntityImageProvider(entity), fit: BoxFit.cover, height: 100, width: 100)
],
);
}
}
更多关于Flutter插件yizz_plugin的介绍及使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html