Flutter扩展功能插件dart_extend的使用
Flutter扩展功能插件dart_extend的使用
关于 📕
Dart Extend 提供了多种 Dart 方法和类,以便您可以编写更好和更清晰的应用程序功能。
发布者
Mashood Hussain
特性 🔌
- 验证器 ⚠️
- 格式化器 👷
- 转换器 ♻️
- 时间戳 ⏳
- 生成器 🎰
入门 🚀
验证器
final email = 'mashoodhussain100@gmail.com'.isEmail(); // true
final email = "mashood100".isEmail(); // false
"1223ee2".isNum; //false
bool isDouble = "122".isNum; // true
检查字符串值是否为数字:
"1223ee2".isNum; //false
"122".isNum; // true
格式化器
// 该方法将任何数值类型转换为十进制格式,例如:22000 ===> 22,000
1232123.233.toDecimalPattern() // 1,232,123
// 默认情况下,valueAfterpoint 设置为 0
32123.123.toDecimalPattern(valueAfterpoint: 1) // 32,123.1
移除列表中的重复项:
List myArray = ['x', 'w', 'x', 'y', 'o', 'x', 'y', 'y', 'r', 'a'];
List unique = myArray.removeDuplicates(); // [ x, w, y, o, r, a ]
转换器
// 将字节转换为可读的内存单位
11432.convertBytesToMemoryUnit() // 11kb
1142132.convertBytesToMemoryUnit() // 1.1 MB
从时间戳转换日期:
final test1 = 1665102617.epochToDate(); // 返回 DateTime 类型 2022-10-07 05:41:03.162
final time = 1665102617.epochToTime(); // 5:30 AM
从日期获取当前周数:
final date1 = DateTime.now().weekOfTheYearFromDate(); // 返回当前年份的周数,例如:12
final date2 = DateTime(2011, 1, 15).weekOfTheYearFromDate(); // 2
时间转换:
final week = 112398.minToDuration(); // 周数
final week = 98.minToDuration(); // 1.6 hr
时间戳
String myTimeago = DateTime.now().timeAgoSinceDateTime(dateInNumbers: true); // 刚刚
从时间戳获取时间差:
String timeagoInString = 1665192814.timeAgoSinceEpochDate(dateInNumbers: false); // 返回 12 天前
生成器
var generate = Generator();
// 生成两个值之间的随机数
print(generate.randomNumber(2, 9)); // 5
// 生成长度为 44 的加密随机字符串
// 当您想生成大量 ID 时很有用
print(generate.createCryptoRandomString()); // KPVz7OIagov_hsn6Hs65XsvH-x43j0XyMNf6HrWMrcQ=
// 另一个 ID 生成器,生成长度为 44 的加密随机字符串
print(generate.uniqueId().length);
生成用户名:
var generate = Generator();
print(generate.randomUserName()); // barley_harryy_1
// 设置 addSpace 参数为 false,因此它将生成没有空格(_)的用户名
// 默认情况下为 true
print(generate.randomUserName(addSpace: false)); // barleyharryy1
print(generate.makeUserName('mashood')); // mashood_82
print(generate.makeUserName('Mashood Hussain')); // mashood_Hussain_23
print(generate.makeUserName('Mashood Hussain')); // mashoodHussain23
// 设置 withNumber 为 false 以生成没有数字的用户名
print(generate.makeUserName('John Doe', withNumber: false)); // mashood_Hussain
// 您还可以设置前缀和后缀,这样它们将出现在每个生成的用户名中
print(generate.makeUserName('Mashood Hussain',
withNumber: false, prefix: 'developer', suffix: 'fultter')); // developer_mashood_hussain_flutter
print(generate.makeUserName('mashoodh@example.com',
date: DateTime.parse('2001-06-20'))); // mashood_01
print(generate.usernameFromName(
firstName: 'mashood',
lastName: 'hussain',
adjectives: ['ready', 'happy'])); // doe_john_10_ready
print(generate.usernameFromName(firstName: 'Mashood', lastName: 'huss')); // mashood_huss_78
// 设置 isAdjectives 为 true 以获取带形容词的用户名
print(generate.listOfUserName('Mashood Hussain', length: 4, isAdjectives: true));
// [
// 4_mashood_awsome,
// 20_hussain_great,
// 7_mashood_fast,
// hussain_mashood_99
// ]
// 默认情况下 isAdjectives 为 false
print(generate.listOfUserName('Mashood Hussain', length: 4));
// [
// 4_mashood,
// 20_hussain,
// 7_mashood,
// hussain_mashood_99
// ]
示例代码
// ignore_for_file: library_private_types_in_public_api
import 'package:dart_extend/dart_extend.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
[@override](/user/override)
Widget build(BuildContext context) {
var generator = Generator();
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Document Scanner Demo'),
),
body: Column(
children: [
Text(1000.toDecimalPattern()), // 显示 1,000
Text(11432.convertBytesToMemoryUnit()), // 显示 11kb
Text(generator.createCryptoRandomString()), // 显示随机生成的字符串
Text(generator.randomNumber(2, 9).toString()) // 显示 2 到 9 之间的随机数
],
)),
);
}
}
更多关于Flutter扩展功能插件dart_extend的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter扩展功能插件dart_extend的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,dart_extend
作为一个 Flutter 扩展功能插件,可以帮助开发者在 Dart 语言中实现一些便捷的扩展功能。虽然 dart_extend
并非一个广泛认知的标准库插件(可能是个假设的名字或者某个特定项目的插件),但我可以展示一些典型的 Dart 扩展函数写法,这些扩展函数可以集成到你自己的项目中,模拟 dart_extend
的功能。
以下是一些常见的 Dart 扩展函数示例,这些扩展可以集成到你的 Flutter 项目中,以增强现有类的功能。
1. 扩展 String
类
extension StringExtensions on String {
// 检查字符串是否为空或null
bool get isEmptyOrNull => this == null || this.isEmpty;
// 转换为首字母大写
String capitalize() {
if (isEmptyOrNull) return this ?? '';
return '${this[0].toUpperCase()}${this.substring(1)}';
}
}
void main() {
String? testStr = 'hello';
print(testStr!.isEmptyOrNull); // false
print(testStr!.capitalize()); // Hello
}
2. 扩展 List
类
extension ListExtensions<T> on List<T> {
// 检查列表是否为空或null
bool get isEmptyOrNull => this == null || this.isEmpty;
// 获取列表中除最后一个元素外的所有元素
List<T> allButLast() {
if (isEmptyOrNull) return [];
return this.sublist(0, this.length - 1);
}
}
void main() {
List<int>? testList = [1, 2, 3, 4];
print(testList!.isEmptyOrNull); // false
print(testList!.allButLast()); // [1, 2, 3]
}
3. 扩展 num
类
extension NumExtensions on num {
// 四舍五入到指定小数位
num roundTo(int decimalPlaces) {
num multiplier = pow(10, decimalPlaces);
return (this * multiplier).round() / multiplier;
}
}
void main() {
num pi = 3.141592653589793;
print(pi.roundTo(2)); // 3.14
}
4. 在 Flutter 项目中使用扩展
要在 Flutter 项目中使用这些扩展,只需将它们定义在合适的 Dart 文件中(如 extensions.dart
),然后在需要使用的地方导入该文件即可。
例如,在 lib
目录下创建一个 extensions.dart
文件,并将上述扩展函数放入其中。然后在你的 Flutter 组件或其他 Dart 文件中导入它:
// extensions.dart
extension StringExtensions on String {
// ... (之前定义的扩展函数)
}
extension ListExtensions<T> on List<T> {
// ... (之前定义的扩展函数)
}
extension NumExtensions on num {
// ... (之前定义的扩展函数)
}
在你的 Flutter 组件中使用:
import 'package:your_app/extensions.dart'; // 根据你的项目结构调整导入路径
void someFunction() {
String? str = 'world';
print('Hello, ${str!.capitalize()}!'); // Hello, World!
}
通过这种方式,你可以为 Dart 的内置类型添加额外的功能,从而提高代码的可读性和复用性。如果你有一个具体的 dart_extend
插件或库,并且需要更具体的帮助,请提供更多关于该插件的信息。