Flutter辅助工具插件easy_helpers的使用
Flutter辅助工具插件easy_helpers的使用
easy_helpers
是一个帮助开发者快速开始应用开发的库工具。它提供了许多有用的函数、扩展和类,使你的日常 Flutter 编码更加便捷。
DateTime 扩展
该包提供了一些与 DateTime
相关的实用扩展方法。
使用
导入后,你可以在任何 DateTime
对象上使用这些扩展方法:
final now = DateTime.now();
print(now.short); // 输出短格式日期
print(now.isToday); // 输出是否为今天
print(now.isSameWeek(now.add(Duration(days: 2)))); // 检查两个日期是否在同一周
可用方法
格式化方法
short
: 返回 “HH:mm” 格式的字符串,如果是今天的日期,则返回小时和分钟;否则返回 “yy.MM.dd”。yMd
: 返回本地化的月/日/年格式。jm
: 返回本地化的小时/分钟格式。
日期比较方法
isToday
: 如果日期是今天,则返回 true。isYesterday
: 如果日期是昨天,则返回 true。isTomorrow
: 如果日期是明天,则返回 true。isPast
: 如果日期在当前时间之前,则返回 true。isFuture
: 如果日期在当前时间之后,则返回 true。isSameDay(DateTime other)
: 如果日期与另一个日期相同,则返回 true。isSameMonth(DateTime other)
: 如果日期与另一个日期在同一个月份,则返回 true。isSameYear(DateTime other)
: 如果日期与另一个日期在同一年,则返回 true。isSameWeek(DateTime other)
: 如果日期与另一个日期在同一个周(以周日为一周的开始)则返回 true。
日期导航方法
nextDay
: 返回此DateTime
的下一天。previousDay
: 返回此DateTime
的前一天。firstDayOfMonth
: 返回此DateTime
所属月份的第一天。lastDayOfMonth
: 返回此DateTime
所属月份的最后一天。previousMonth
: 返回当前日期的前一个月。nextMonth
: 返回当前日期的下一个月。previousWeek
: 返回当前日期的前一周的DateTime
。nextWeek
: 返回当前日期的后一周的DateTime
。
布尔检查
isFirstDayOfMonth
: 如果日期是月份的第一天,则返回 true。isLastDayOfMonth
: 如果日期是月份的最后一天,则返回 true。
详细示例
格式化方法
void main() {
final now = DateTime.now();
final futureDate = DateTime(2024, 7, 24);
print('Short format (today): ${now.short}');
print('Short format (future date): ${futureDate.short}');
print('yMd format: ${now.yMd}');
print('jm format: ${now.jm}');
}
// 假设当前日期为 2023-07-24
// 输出:
// Short format (today): 14:30
// Short format (future date): 24.07.24
// yMd format: 7/24/2023
// jm format: 2:30 PM
日期比较方法
void main() {
final now = DateTime.now();
final yesterday = now.subtract(Duration(days: 1));
final tomorrow = now.add(Duration(days: 1));
final lastWeek = now.subtract(Duration(days: 7));
final nextWeek = now.add(Duration(days: 7));
print('Is today: ${now.isToday}');
print('Is yesterday: ${yesterday.isYesterday}');
print('Is tomorrow: ${tomorrow.isTomorrow}');
print('Is in the past: ${yesterday.isPast}');
print('Is in the future: ${tomorrow.isFuture}');
print('Is same day: ${now.isSameDay(now)}');
print('Is same month: ${now.isSameMonth(lastWeek)}');
print('Is same year: ${now.isSameYear(nextWeek)}');
print('Is same week: ${now.isSameWeek(tomorrow)}');
print('Is same week (next week): ${now.isSameWeek(nextWeek)}');
}
// 输出:
// Is today: true
// Is yesterday: true
// Is tomorrow: true
// Is in the past: true
// Is in the future: true
// Is same day: true
// Is same month: true
// Is same year: true
// Is same week: true
// Is same week (next week): false
日期导航方法
void main() {
final now = DateTime(2023, 7, 24); // 一个周一
print('Next day: ${now.nextDay}');
print('Previous day: ${now.previousDay}');
print('First day of month: ${now.firstDayOfMonth}');
print('Last day of month: ${now.lastDayOfMonth}');
print('Previous month: ${now.previousMonth}');
print('Next month: ${now.nextMonth}');
print('Previous week: ${now.previousWeek}');
print('Next week: ${now.nextWeek}');
}
// 输出:
// Next day: 2023-07-25 00:00:00.000
// Previous day: 2023-07-23 00:00:00.000
// First day of month: 2023-07-01 00:00:00.000
// Last day of month: 2023-07-31 00:00:00.000
// Previous month: 2023-06-01 00:00:00.000
// Next month: 2023-08-01 00:00:00.000
// Previous week: 2023-07-17 00:00:00.000
// Next week: 2023-07-31 00:00:00.000
布尔检查
void main() {
final firstDay = DateTime(2023, 7, 1);
final lastDay = DateTime(2023, 7, 31);
final middleDay = DateTime(2023, 7, 15);
print('Is first day of month: ${firstDay.isFirstDayOfMonth}');
print('Is last day of month: ${lastDay.isLastDayOfMonth}');
print('Middle day - Is first day of month: ${middleDay.isFirstDayOfMonth}');
print('Middle day - Is last day of month: ${middleDay.isLastDayOfMonth}');
}
// 输出:
// Is first day of month: true
// Is last day of month: true
// Middle day - Is first day of month: false
// Middle day - Is last day of month: false
String 扩展方法
该包提供了一组有用的 String
类的扩展方法,以提高 Dart 和 Flutter 项目的开发效率。
使用
导入后,你可以在任何 String
对象上使用这些扩展方法:
void main() {
String email = 'user@example.com';
print(email.isEmail); // 输出: true
String number = '42';
print(number.tryInt()); // 输出: 42
String longText = 'This is a very long text that needs to be cut';
print(longText.cut(20, suffix: '...')); // 输出: "This is a very long..."
}
可用方法
转换方法
tryInt()
: 将字符串转换为整数。如果转换失败则返回 0。tryDouble()
: 将字符串转换为双精度浮点数。如果转换失败则返回 0.0。
验证方法
isEmail
: 如果字符串是有效的电子邮件地址,则返回 true。isAlphabet
: 检查字符串是否只包含字母(不含空格)。isAlphanumeric
: 检查字符串是否只包含字母和数字。isBool
: 检查字符串是否是一个布尔值。isInt
: 检查字符串是否是一个整数。isNumeric
: 检查字符串是否是数字。hasUrl
: 如果字符串包含 URL,则返回 true。isURL
: 检查字符串是否是一个 URL。
字符串操作方法
isEmpty
: 如果字符串为空或 null,则返回 true。or(String value)
: 如果字符串为空或 null,则返回给定的值。
URL 相关方法
hasUrl
: 如果字符串包含 URL,则返回 true。
日期和时间方法
isValidDateTime
: 如果字符串可以解析为 DateTime 或者已经是 DateTime 格式,则返回 true。dateTime
: 将字符串转换为 DateTime 对象。
文本格式化方法
capitalizeFirstLetter()
: 将字符串的第一个字母大写。ucFirst
:capitalizeFirstLetter()
的别名。
可空字符串扩展
提供了一个额外的可空字符串扩展:
isEmpty
: 如果字符串为空或 null,则返回 true。or(newString)
: 如果字符串为空或 null,则返回新的字符串。
正则表达式
hasMatch
检查字符串是否匹配正则表达式:
void main() {
// 定义一个包含 "hello" 和 "world" 的字符串
const input = 'hello world';
// 检查字符串是否包含单词 "world"
final hasWorld = input.hasMatch('world');
print(hasWorld); // 输出: true
// 检查字符串是否包含单词 "universe"
final hasUniverse = input.hasMatch('universe');
print(hasUniverse); // 输出: false
}
Flutter 函数
该包包含一组用于 Flutter 开发的实用函数。这些函数提供了用于显示对话框、日志记录、处理字符串等功能。
Alert
提供函数来显示警告对话框:
alert(
context,
title: Text('Alert'),
content: Text('This is an alert dialog'),
onOkPressed: () {
print('OK pressed');
},
);
Confirm
提供函数来显示确认对话框:
final re = await confirm(
context: context,
title: Text('Delete'.t),
message: Text('Are you sure you wanted to delete this post?'.t),
);
if (re == false) return;
你可以选择性地提供一个子标题小部件。它是一个小部件,而不是文本字符串。
confirm(
context: context,
title: Text('title'),
subtitle: const CircleAvatar(
child: Text('yo'),
),
message: Text('message'),
);
Error
提供函数来显示错误对话框:
error(context: context, title: 'title', message: 'message');
Input
提供函数来显示输入对话框:
// 示例代码待补充
Platform
提供函数来处理平台特定的代码:
示例 1: 打印平台名称
print(platformName()); // 如果在 Web 上运行,则打印 "web",否则打印 "android" 或 "ios"
示例 2: 使用平台特定逻辑
void main() {
if (platformName() == 'ios') {
print('This is an iOS device');
} else if (platformName() == 'android') {
print('This is an Android device');
}
}
示例 3: 检查特定平台
void main() {
if (isIos) {
print('This is an iOS device');
}
if (isAndroid) {
print('This is an Android device');
}
}
Toast
提供函数来显示 Toast 消息:
final re = await my?.block(chat.room.otherUserUid!);
toast(
context: context,
title: Text(re == true ? 'Blocked' : 'Unblocked'),
message: Text(re == true ? 'You have blocked this user' : 'You have unblocked this user'),
);
字符串函数
sanitizeFilename
一个用于清理文件名的实用函数,替换非法字符和保留名称。
const unsafeUserInput = "~/.\u0000ssh/authorized_keys";
// "~.sshauthorized_keys"
sanitizeFilename(unsafeUserInput);
// "~-.-ssh-authorized_keys"
sanitizeFilename(unsafeUserInput, replacement: "-");
参数:
input
: 需要清理的输入字符串。replacement
: 可选参数,指定替换非法字符的字符或字符串,默认为空字符串。
日志
Log
dog
: 打印调试日志消息。.dog()
: 在任何对象上打印调试日志消息。
dog('this is a log message with dog emoji 🐶');
({'a': 'apple', 'b': 'banana'} as Map).dog();
更多关于Flutter辅助工具插件easy_helpers的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter辅助工具插件easy_helpers的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用easy_helpers
插件的示例代码案例。easy_helpers
是一个辅助工具插件,可以帮助你简化一些常见的开发任务。为了展示其使用,我们将创建一个简单的Flutter应用,演示如何利用easy_helpers
中的一些功能。
首先,确保你已经在pubspec.yaml
文件中添加了easy_helpers
依赖:
dependencies:
flutter:
sdk: flutter
easy_helpers: ^最新版本号 # 请替换为实际发布的最新版本号
然后运行flutter pub get
来获取依赖。
示例代码
以下是一个简单的Flutter应用示例,展示了如何使用easy_helpers
中的一些功能,比如字符串处理和设备信息获取。
main.dart
import 'package:flutter/material.dart';
import 'package:easy_helpers/easy_helpers.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Easy Helpers Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String? deviceInfo;
String? capitalizedString;
@override
void initState() {
super.initState();
// 获取设备信息
_getDeviceInfo();
// 字符串处理示例
_processString("hello world");
}
void _getDeviceInfo() async {
final deviceInfoText = await EasyHelpers.deviceInfo();
setState(() {
deviceInfo = deviceInfoText;
});
}
void _processString(String input) {
setState(() {
capitalizedString = EasyHelpers.capitalizeFirstLetter(input);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Easy Helpers Demo'),
),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
'Device Info:',
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
Text(deviceInfo ?? 'Loading...'),
SizedBox(height: 20),
Text(
'String Processing:',
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
),
Text(capitalizedString ?? 'Processing...'),
],
),
),
);
}
}
解释
- 依赖添加:在
pubspec.yaml
文件中添加easy_helpers
依赖。 - 获取设备信息:使用
EasyHelpers.deviceInfo()
方法获取设备信息,并在UI中显示。 - 字符串处理:使用
EasyHelpers.capitalizeFirstLetter(String input)
方法将输入字符串的首字母大写,并在UI中显示处理后的字符串。
运行应用
确保你已经正确添加了依赖并导入了必要的包,然后运行flutter run
来启动应用。你应该能够在应用界面上看到设备信息和处理后的字符串。
这个示例展示了如何使用easy_helpers
插件简化一些常见的开发任务。根据easy_helpers
提供的具体功能,你可以进一步探索并集成到你的项目中。