Flutter基础工具集插件basic_utils_flutter的使用

Flutter基础工具集插件basic_utils_flutter的使用

在Flutter开发过程中,经常会遇到一些重复性的工作。basic_utils_flutter 插件提供了一些常用的工具函数,帮助开发者更高效地完成这些任务。本文将详细介绍如何使用 basic_utils_flutter 插件,并通过一个简单的示例来展示其用法。

Features

  • dialog_utils: 用于创建对话框。
  • progress_dialog_utils: 用于管理进度对话框。
  • localization: 用于国际化和本地化。
  • routes: 用于路由管理。
  • validator_form: 用于表单验证。

使用步骤

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

dependencies:
  basic_utils_flutter: ^1.0.0

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

接下来,我们将通过一个简单的示例来演示如何使用这些功能。

示例代码

以下是一个简单的示例,展示了如何使用 dialog_utilsprogress_dialog_utils

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Basic Utils Flutter Demo',
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  bool _isLoading = false;

  void _showDialog() {
    DialogUtils.showAlertDialog(
      context,
      title: "提示",
      message: "这是一个对话框。",
      positiveButtonText: "确定",
      negativeButtonText: "取消",
      onPositivePressed: () {
        print("点击了确定按钮");
      },
      onNegativePressed: () {
        print("点击了取消按钮");
      },
    );
  }

  void _showProgressDialog() async {
    setState(() {
      _isLoading = true;
    });

    await ProgressDialogUtils.showProgressDialog(context);

    // 模拟一些耗时操作
    await Future.delayed(Duration(seconds: 2));

    setState(() {
      _isLoading = false;
    });

    ProgressDialogUtils.hideProgressDialog(context);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Basic Utils Flutter Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: _showDialog,
              child: Text('显示对话框'),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _showProgressDialog,
              child: Text(_isLoading ? '加载中...' : '显示进度对话框'),
            ),
          ],
        ),
      ),
    );
  }
}

代码解析

  1. 导入库

    import 'package:basic_utils_flutter/basic_utils_flutter.dart';
    
  2. 定义主应用

    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Basic Utils Flutter Demo',
          home: HomeScreen(),
        );
      }
    }
    
  3. 定义主屏幕

    class HomeScreen extends StatefulWidget {
      @override
      _HomeScreenState createState() => _HomeScreenState();
    }
    
    class _HomeScreenState extends State<HomeScreen> {
      bool _isLoading = false;
    
      void _showDialog() {
        DialogUtils.showAlertDialog(
          context,
          title: "提示",
          message: "这是一个对话框。",
          positiveButtonText: "确定",
          negativeButtonText: "取消",
          onPositivePressed: () {
            print("点击了确定按钮");
          },
          onNegativePressed: () {
            print("点击了取消按钮");
          },
        );
      }
    
      void _showProgressDialog() async {
        setState(() {
          _isLoading = true;
        });
    
        await ProgressDialogUtils.showProgressDialog(context);
    
        // 模拟一些耗时操作
        await Future.delayed(Duration(seconds: 2));
    
        setState(() {
          _isLoading = false;
        });
    
        ProgressDialogUtils.hideProgressDialog(context);
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('Basic Utils Flutter Demo'),
          ),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                ElevatedButton(
                  onPressed: _showDialog,
                  child: Text('显示对话框'),
                ),
                SizedBox(height: 20),
                ElevatedButton(
                  onPressed: _showProgressDialog,
                  child: Text(_isLoading ? '加载中...' : '显示进度对话框'),
                ),
              ],
            ),
          ),
        );
      }
    }
    

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

1 回复

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


当然,basic_utils_flutter 是一个在 Flutter 开发中非常有用的工具集插件,它提供了许多基础功能,比如日期处理、加密解密、设备信息获取等。以下是一些常用功能的代码示例,展示了如何在 Flutter 项目中使用 basic_utils_flutter 插件。

首先,确保你已经在 pubspec.yaml 文件中添加了 basic_utils_flutter 依赖:

dependencies:
  flutter:
    sdk: flutter
  basic_utils_flutter: ^最新版本号  # 请替换为最新版本号

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

1. 日期处理

basic_utils_flutter 提供了方便的日期处理功能,比如格式化日期。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Date Utils Example'),
        ),
        body: Center(
          child: DateUtilsExample(),
        ),
      ),
    );
  }
}

class DateUtilsExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    DateTime now = DateTime.now();
    String formattedDate = DateUtils.formatDate(now, 'yyyy-MM-dd HH:mm:ss');
    return Text('Current Date and Time: $formattedDate');
  }
}

2. 设备信息获取

你可以使用 DeviceUtils 来获取设备信息,比如设备型号、操作系统版本等。

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

class DeviceInfoExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    String deviceInfo = 'Device Model: ${DeviceUtils.deviceModel}\n'
        'OS Version: ${DeviceUtils.osVersion}\n'
        'Brand: ${DeviceUtils.brand}\n'
        'Manufacturer: ${DeviceUtils.manufacturer}';
    return Text(deviceInfo);
  }
}

3. 加密解密

basic_utils_flutter 提供了基本的加密解密功能,比如 MD5 和 SHA 散列。

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

class EncryptionExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    String originalString = "Hello, Flutter!";
    String md5Hash = CryptoUtils.md5(originalString);
    String sha256Hash = CryptoUtils.sha256(originalString);

    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: <Widget>[
        Text('Original String: $originalString'),
        Text('MD5 Hash: $md5Hash'),
        Text('SHA-256 Hash: $sha256Hash'),
      ],
    );
  }
}

4. 网络工具

basic_utils_flutter 还提供了网络相关的工具,比如检查网络连接状态。

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

class NetworkUtilsExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    bool isConnected = NetworkUtils.isConnected;

    return Text('Is Device Connected to Internet? $isConnected');
  }
}

完整示例

将以上示例整合到一个完整的 Flutter 应用中:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('basic_utils_flutter Examples'),
        ),
        body: ListView(
          children: <Widget>[
            DateUtilsExample(),
            SizedBox(height: 20),
            DeviceInfoExample(),
            SizedBox(height: 20),
            EncryptionExample(),
            SizedBox(height: 20),
            NetworkUtilsExample(),
          ],
        ),
      ),
    );
  }
}

class DateUtilsExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    DateTime now = DateTime.now();
    String formattedDate = DateUtils.formatDate(now, 'yyyy-MM-dd HH:mm:ss');
    return Text('Current Date and Time: $formattedDate');
  }
}

class DeviceInfoExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    String deviceInfo = 'Device Model: ${DeviceUtils.deviceModel}\n'
        'OS Version: ${DeviceUtils.osVersion}\n'
        'Brand: ${DeviceUtils.brand}\n'
        'Manufacturer: ${DeviceUtils.manufacturer}';
    return Padding(
      padding: const EdgeInsets.symmetric(vertical: 8.0),
      child: Text(deviceInfo),
    );
  }
}

class EncryptionExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    String originalString = "Hello, Flutter!";
    String md5Hash = CryptoUtils.md5(originalString);
    String sha256Hash = CryptoUtils.sha256(originalString);

    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: <Widget>[
        Text('Original String: $originalString'),
        Text('MD5 Hash: $md5Hash'),
        Text('SHA-256 Hash: $sha256Hash'),
      ],
    );
  }
}

class NetworkUtilsExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    bool isConnected = NetworkUtils.isConnected;

    return Text('Is Device Connected to Internet? $isConnected');
  }
}

这个示例展示了如何使用 basic_utils_flutter 插件的几个主要功能。你可以根据需要扩展这些功能,以适应你的具体应用场景。

回到顶部