Flutter扩展功能插件dart_extend的使用

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

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

1 回复

更多关于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 插件或库,并且需要更具体的帮助,请提供更多关于该插件的信息。

回到顶部