Flutter实用工具集插件flutter_handy_utils的使用

Flutter实用工具集插件flutter_handy_utils的使用

flutter_handy_utils 是一个由社区驱动的项目,旨在简化Flutter开发中的常见任务。它提供了广泛的实用函数、扩展和小部件,使构建Flutter应用变得简单。以下是关于如何使用、贡献以及参与此包的所有信息。


特性

工具(Utils)

  • TreeBuilder:用于创建结构化的父子关系。

扩展(Extensions)

  • WidgetsSeparator:在列表中的小部件之间添加间隙或分隔符。
  • StringEllipsSize:返回从开头或结尾截断到指定最大长度的新字符串。

小部件(Widgets)

  • GroupedRadioButton:显示一组单选按钮的小部件。

使用方法

TreeBuilder 的使用

创建结构化的父子关系

  1. 创建一个 TreeInputItem 列表:
final list = [
   TreeInputItem<int>(id: 1, parentId: 0, data: "Parent 1"),
   TreeInputItem<int>(id: 2, parentId: 1, data: "Child 1"),
   TreeInputItem<int>(id: 3, parentId: 1, data: "Child 2"),
];
  1. 创建 TreeBuilder 实例:
final treeBuilder = TreeBuilder<int>();
  1. 构建树结构:
final result = treeBuilder.buildTree(list);

结果将是一个包含父项及其子项的 List<TreeOutPutItem<int>>


WidgetsSeparator 的使用

在小部件之间添加间隙或分隔符

  • 使用 withDividerInBetween 添加分隔线:
listOfWidgets.withDividerInBetween(
     color: Colors.red,
     height: 20,
     thickness: 20,
     indent: 20,
     endIndent: 20,
);
  • 使用 withGapInBetween 添加间隙:
listOfWidgets.withGapInBetween(gapSize: 20);

StringEllipsSize 的使用

截断字符串至指定长度

String text = "This is a very long string";

String truncatedText = text.ellipsSize(maxLength: 10);
print(truncatedText); // 输出:"This is a..."

String truncatedTextFromStart = text.ellipsSize(maxLength: 10, fromStart: true);
print(truncatedTextFromStart); // 输出:"...long string"

GroupedRadioButton 的使用

显示一组单选按钮

GroupedRadioButton<String>(
  items: [
    GroupedRadioButtonItem(title: Text("选项 1"), value: "option1"),
    GroupedRadioButtonItem(title: Text("选项 2"), value: "option2"),
  ],
  onChanged: (value) {
    print(value);
  },
  initialGroupValue: "option1",
),

示例代码

以下是一个完整的示例代码,展示了如何在Flutter应用中使用 flutter_handy_utils 提供的功能:

import 'package:example/examples/grouped_radio_button_example.dart';
import 'package:flutter/material.dart';

import 'examples/string_ellips_size_example.dart';
import 'examples/tree_builder_example.dart';
import 'examples/widget_separator_example.dart';

void main() {
  runApp(const MainApp());
}

class MainApp extends StatelessWidget {
  const MainApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text("flutter_handy_utils 示例"),
          shadowColor: Colors.black,
          elevation: 5,
          scrolledUnderElevation: 0,
          surfaceTintColor: Colors.white,
          backgroundColor: Colors.white,
          centerTitle: true,
        ),
        body: Column(
          children: [
            _treeBuilder(),
            _widgetsSeparator(),
            _stringEllipsSize(),
            _groupedRadioButton(),
          ],
        ),
      ),
    );
  }

  ExpansionTile _widgetsSeparator() {
    return const ExpansionTile(
      title: Text("WidgetsSeparator"),
      childrenPadding: EdgeInsets.all(10),
      children: [
        WidgetsSeparatorExample(),
      ],
    );
  }

  ExpansionTile _treeBuilder() {
    return const ExpansionTile(
      title: Text("TreeBuilder"),
      childrenPadding: EdgeInsets.all(10),
      children: [
        TreeBuilderExample(),
      ],
    );
  }

  Widget _stringEllipsSize() {
    return const ExpansionTile(
      title: Text("StringEllipsSize"),
      childrenPadding: EdgeInsets.all(10),
      children: [
        StringEllipsSizeExample(),
      ],
    );
  }

  Widget _groupedRadioButton() {
    return const ExpansionTile(
      title: Text("GroupedRadioButton"),
      childrenPadding: EdgeInsets.all(10),
      children: [
        GroupedRadioButtonExample(),
      ],
    );
  }
}

更多关于Flutter实用工具集插件flutter_handy_utils的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter实用工具集插件flutter_handy_utils的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_handy_utils 是一个 Flutter 实用工具集插件,它提供了许多常用的工具函数和扩展方法,帮助开发者更高效地编写 Flutter 应用。这个插件包含了字符串处理、日期时间操作、设备信息获取、网络状态监听、文件操作等功能。

以下是如何使用 flutter_handy_utils 插件的简单指南:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 flutter_handy_utils 依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_handy_utils: ^最新版本号

然后运行 flutter pub get 来安装依赖。

2. 导入包

在你的 Dart 文件中导入 flutter_handy_utils 包:

import 'package:flutter_handy_utils/flutter_handy_utils.dart';

3. 使用工具函数和扩展方法

3.1 字符串工具

String str = "Hello, World!";

// 检查字符串是否为空或仅为空格
bool isEmptyOrWhitespace = str.isNullOrWhitespace;

// 反转字符串
String reversedStr = str.reverse;

// 将字符串转换为驼峰式
String camelCaseStr = str.toCamelCase;

// 将字符串转换为蛇形命名
String snakeCaseStr = str.toSnakeCase;

3.2 日期时间工具

DateTime now = DateTime.now();

// 格式化日期时间
String formattedDate = now.format("yyyy-MM-dd HH:mm:ss");

// 获取日期时间的 Unix 时间戳
int timestamp = now.toTimestamp;

// 检查日期是否是今天
bool isToday = now.isToday;

// 添加天数
DateTime futureDate = now.addDays(7);

3.3 设备信息工具

// 获取设备信息
DeviceInfo deviceInfo = HandyUtils.deviceInfo;

// 获取设备型号
String deviceModel = deviceInfo.model;

// 获取设备系统版本
String osVersion = deviceInfo.osVersion;

// 获取设备品牌
String deviceBrand = deviceInfo.brand;

3.4 网络状态工具

// 监听网络状态
HandyUtils.networkListener.listen((NetworkStatus status) {
  print("Network status: ${status.name}");
});

// 检查当前网络状态
NetworkStatus currentStatus = HandyUtils.networkStatus;

// 判断是否有网络连接
bool isConnected = currentStatus == NetworkStatus.connected;

3.5 文件操作工具

// 读取文件内容
String content = await HandyUtils.readFile("path/to/file.txt");

// 写入文件内容
await HandyUtils.writeFile("path/to/file.txt", "Hello, World!");

// 检查文件是否存在
bool fileExists = await HandyUtils.fileExists("path/to/file.txt");

// 删除文件
await HandyUtils.deleteFile("path/to/file.txt");

4. 其他功能

flutter_handy_utils 还提供了许多其他实用的工具函数和扩展方法,例如:

  • 颜色工具:颜色转换、随机颜色生成等。
  • 数学工具:四舍五入、数值范围限制等。
  • 加密工具:MD5、SHA1、Base64 等加密算法。
  • 日志工具:简化日志输出。

5. 示例代码

以下是一个简单的示例,展示了如何使用 flutter_handy_utils 插件:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Handy Utils Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text("Current Date: ${DateTime.now().format("yyyy-MM-dd")}"),
              Text("Device Model: ${HandyUtils.deviceInfo.model}"),
              ElevatedButton(
                onPressed: () async {
                  String content = await HandyUtils.readFile("path/to/file.txt");
                  print("File Content: $content");
                },
                child: Text("Read File"),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
回到顶部