Flutter插件packagist_extensions详解

Flutter插件packagist_extensions详解


1. intdouble 扩展

intdouble 扩展提供了许多实用方法,用于格式化数字或获取其正数形式。例如:

// 格式化数字并添加千位分隔符
int price = 123456789;
print(price.thousandsSeparator()); // 输出: 123,456,789

// 获取正数形式
int negativePrice = -123456789;
print(negativePrice.positive); // 输出: 0

用途:

  • 在金融类应用中,可以方便地格式化金额。
  • 用于生成用户友好的数据展示。

2. String 扩展

String 扩展包含了许多与字符串操作相关的实用工具,如验证邮箱、手机号码、文件类型等。

// 验证字符串是否为空
String? str = null;
print(str.isNullOrEmpty); // 输出: true

// 将字符串转换为小写
String text = "HELLO WORLD!";
print(text.toLowerCase()); // 输出: hello world!

// 验证电子邮件
String email = "test@example.com";
print(email.validateEmail()); // 输出: true

潜在用途:

  • 数据输入校验(如表单提交)。
  • 文件类型检测(如上传文件前的格式检查)。
  • 提供友好的文本处理能力。

3. List 扩展

List 扩展提供了安全插入和移除元素的方法,避免了常见的数组越界问题。

List<int> numbers = [1, 2, 3];

// 安全插入元素
numbers.insertSafe(0, 0);
print(numbers); // 输出: [0, 1, 2, 3]

// 安全移除元素
numbers.removeSafeAt(0);
print(numbers); // 输出: [1, 2, 3]

用途:

  • 数据列表的动态操作(如购物车管理)。
  • 避免因错误索引导致的运行时异常。

4. Map 扩展

Map 扩展提供了便捷的方式来操作键值对,如获取值或添加新键值对。

Map<String, int> data = {"a": 1, "b": 2};

// 添加新键值对
data.add("c", 3);
print(data); // 输出: {a: 1, b: 2, c: 3}

// 获取指定键的值
print(data.value("a")); // 输出: 1

用途:

  • 快速构建配置对象。
  • 动态更新状态管理中的映射结构。

5. DateTime 扩展

DateTime 扩展提供了方便的时间格式化和比较功能。

final now = DateTime.now();

// 判断当前日期是否为今天
print(now.isToday); // 输出: true

// 格式化时间
print(now.format("yyyy-MM-dd HH:mm:ss")); // 输出: 当前时间格式

潜在用途:

  • 时间戳转换和格式化。
  • 日历类应用的时间逻辑处理。

6. Gesture 扩展

Gesture 扩展提供了防抖和节流功能,优化用户交互体验。

// 防抖
onPressed: () => print("Normal"),
onPressed: () => print("Debounce").debounce(),
onPressed: () => print("Throttle").throttle(),

潜在用途:

  • 避免频繁触发事件(如滚动、点击)。
  • 提升用户体验,减少不必要的计算开销。

7. Permission 扩展

Permission 扩展简化了权限请求逻辑,并提供了回调函数来处理授权结果。

Permission.camera.use(
  onAccept: (status) {
    print("Permission granted");
  },
  onDenied: (status) {
    print("Permission denied");
  },
);

潜在用途:

  • Android 13 的多媒体资源访问权限适配。
  • 统一管理权限请求逻辑。

示例代码完整 Demo

以下是一个完整的示例代码,展示了如何在 Flutter 中使用 packagist_extensions 插件的功能:

import 'package:flutter/material.dart';
import 'package:packagist_extensions/packagist_extensions.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text("packagist_extensions Demo")),
        body: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            children: [
              // int 和 double 扩展
              Text("Int Extension: ${123456789.thousandsSeparator()}"),
              Text("Double Extension: ${123456789.11.thousandsSeparator()}"),

              // String 扩展
              Text("String Extension: ${"hello world !".capitalizeFirstLetter()}"),
              Text("Email Validation: ${"test@example.com".validateEmail()}"),

              // List 扩展
              ElevatedButton(
                onPressed: () {
                  List<int> list = [1, 2, 3];
                  list.insertSafe(0, 0);
                  print(list); // 输出: [0, 1, 2, 3]
                },
                child: Text("List Insert Safe"),
              ),

              // Map 扩展
              ElevatedButton(
                onPressed: () {
                  Map<String, int> map = {"a": 1, "b": 2};
                  map.add("c", 3);
                  print(map); // 输出: {a: 1, b: 2, c: 3}
                },
                child: Text("Map Add"),
              ),

              // DateTime 扩展
              Text("Current Date: ${DateTime.now().format("yyyy-MM-dd HH:mm:ss")}"),

              // Gesture 扩展
              ElevatedButton(
                onPressed: () => print("Normal"),
                child: Text("Normal"),
              ),
              ElevatedButton(
                onPressed: () => print("Debounce").debounce(),
                child: Text("Debounce"),
              ),
              ElevatedButton(
                onPressed: () => print("Throttle").throttle(),
                child: Text("Throttle"),
              ),

              // Permission 扩展
              ElevatedButton(
                onPressed: () {
                  Permission.camera.use(
                    onAccept: (status) => print("Permission granted"),
                    onDenied: (status) => print("Permission denied"),
                  );
                },
                child: Text("Request Camera Permission"),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter插件packagist_extensions详解的实战教程也可以访问 https://www.itying.com/category-92-b0.html

回到顶部