Flutter实用工具集合插件utils_plus的使用

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

Flutter实用工具集合插件utils_plus的使用

utils_plus 是一个Flutter插件,提供了一系列常用的Dart和Flutter类型的扩展方法。它旨在通过提供便捷的方法和实用工具来简化并增强你的开发体验。

功能特性

utils_plus 包含了以下类型的扩展方法:

  • String:字符串操作
  • num:数字操作
  • int:整数操作
  • List:列表操作
  • DateTime:日期时间操作
  • Enum:枚举操作

入门指南

要使用 utils_plus 插件,首先需要在 pubspec.yaml 文件中添加依赖:

dependencies:
  utils_plus: ^0.0.4

使用示例

下面是一个完整的示例代码,展示了如何使用 utils_plus 插件中的各种扩展方法。这个示例创建了一个简单的Flutter应用,展示了不同类型的扩展方法及其用法。

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

enum UserType {
  admin,
  superAdmin,
  normal;
}

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Utils Examples',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({
    super.key,
  });

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final userType = UserType.superAdmin;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(
          "all utils".toCapitalizeEachWord, // 将字符串每个单词首字母大写
        ),
      ),
      body: ListView(
        padding: const EdgeInsets.symmetric(horizontal: 23, vertical: 0),
        children: [
          TableWithHeader(
            headerTitle: "String",
            datas: [
              DataModel(name: "removeLast", input: "qwer"), // 移除最后一个字符
              DataModel(name: "toCapitalizeFirst", input: "hello"), // 首字母大写
              DataModel(name: "toCapitalizeEachWord", input: "capitalize each word"), // 每个单词首字母大写
              DataModel(name: "wordToSentence", input: "appleBallCat"), // 将驼峰命名转换为句子
              DataModel(name: "formatEmailToStar", input: "test@gmail.com"), // 隐藏邮箱部分字符
              DataModel(name: "getFirstName", input: "John Doe"), // 获取名字
              DataModel(name: "getLastName", input: "John Doe"), // 获取姓氏
              DataModel(name: "toOneWord", input: "Hello World"), // 转换为单个单词
              DataModel(name: "extention", input: "apple.txt"), // 获取文件扩展名
              DataModel(name: "fileName", input: "apple/ball.txt"), // 获取文件名
              DataModel(name: "isPdf", input: "test.pdf"), // 判断是否为PDF文件
              DataModel(name: "isImage", input: "image.jpg"), // 判断是否为图片文件
              DataModel(name: "isNotEmptyOrNull", input: ""), // 判断字符串是否非空且非null
              DataModel(name: "emoji", input: "NP"), // 将国家代码转换为国旗表情
            ],
          ),
          const SizedBox(height: 20),
          TableWithHeader(
            headerTitle: "Date Format",
            datas: [
              DataModel(
                name: "isSameDate",
                input: DateTime.now(), // 判断两个日期是否相同
                inputString: "DateTime.now()",
              ),
              DataModel(
                name: "toFormattedString",
                input: DateTime.now(), // 格式化日期为字符串
                inputString: "DateTime.now()",
              ),
              DataModel(
                name: "getDurationName",
                input: DateTime.now(), // 获取时间段的名称
                inputString: "DateTime.now()",
              ),
              DataModel(
                name: "getRelated",
                input: DateTime.now(), // 获取与当前日期的相关描述
                inputString: "DateTime.now()",
              ),
            ],
          ),
          const SizedBox(height: 20),
          TableWithHeader(
            headerTitle: "Enum",
            datas: [
              DataModel(
                name: "toFormattedString",
                input: userType, // 将枚举值格式化为字符串
                inputString: "$userType",
              ),
            ],
          ),
          const SizedBox(height: 20),
          TableWithHeader(
            headerTitle: "Numbers",
            datas: [
              DataModel(
                name: "toNonZero",
                input: 0, // 将0转换为1
                inputString: "0",
              ),
              DataModel(
                name: "formatTime",
                input: 404, // 格式化时间为秒
                inputString: "404",
              ),
              DataModel(
                name: "formatTimeToHrMinSec",
                input: 404, // 格式化时间为小时、分钟、秒
                inputString: "404",
              ),
              DataModel(
                name: "formatTimeToHrMin",
                input: 404, // 格式化时间为小时、分钟
                inputString: "404",
              ),
            ],
          ),
          const SizedBox(height: 40),
        ],
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何使用Flutter实用工具集合插件 utils_plus 的示例代码案例。这个插件提供了一系列实用的工具函数,可以简化开发过程。以下是一个简单的示例,展示如何使用其中的一些功能,比如设备信息获取、屏幕尺寸获取、颜色转换等。

首先,确保在你的 pubspec.yaml 文件中添加 utils_plus 依赖:

dependencies:
  flutter:
    sdk: flutter
  utils_plus: ^x.y.z  # 替换为最新版本号

然后运行 flutter pub get 来获取依赖。

示例代码

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Utils Plus Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String _deviceInfo = '';
  String _screenSize = '';
  Color _convertedColor = Colors.transparent;

  @override
  void initState() {
    super.initState();
    _getDeviceInfo();
    _getScreenSize();
  }

  void _getDeviceInfo() async {
    DeviceInfo deviceInfo = await DeviceUtils.info;
    setState(() {
      _deviceInfo = 'Brand: ${deviceInfo.brand}\n'
                    'Model: ${deviceInfo.model}\n'
                    'System Version: ${deviceInfo.systemVersion}';
    });
  }

  void _getScreenSize() {
    Size screenSize = ScreenUtils.screenSize;
    setState(() {
      _screenSize = 'Width: ${screenSize.width.toInt()}\n'
                    'Height: ${screenSize.height.toInt()}';
    });
  }

  void _convertColor() {
    int hexColor = ColorUtils.stringToColor('#FF5733');
    setState(() {
      _convertedColor = Color(hexColor);
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Utils Plus Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: <Widget>[
            Text('Device Info:', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
            SizedBox(height: 8),
            Text(_deviceInfo, style: TextStyle(fontSize: 16)),
            SizedBox(height: 24),
            Text('Screen Size:', style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold)),
            SizedBox(height: 8),
            Text(_screenSize, style: TextStyle(fontSize: 16)),
            SizedBox(height: 24),
            ElevatedButton(
              onPressed: _convertColor,
              child: Text('Convert Color'),
            ),
            SizedBox(height: 16),
            Container(
              width: 100,
              height: 100,
              color: _convertedColor,
              child: Center(child: Text('Converted Color', style: TextStyle(color: Colors.white))),
            ),
          ],
        ),
      ),
    );
  }
}

代码说明

  1. 设备信息获取

    • 使用 DeviceUtils.info 获取设备信息,并显示在屏幕上。
  2. 屏幕尺寸获取

    • 使用 ScreenUtils.screenSize 获取屏幕尺寸,并显示在屏幕上。
  3. 颜色转换

    • 使用 ColorUtils.stringToColor 将十六进制颜色字符串转换为 Color 对象,并显示在屏幕上。

这个示例展示了如何使用 utils_plus 插件中的一些功能。你可以根据需要进一步探索和使用该插件提供的其他工具函数。

回到顶部