当前位置: 首页> 科技> IT业 > 网页浏览器软件有哪些_crm管理系统软件哪家好_怎么优化一个网站关键词_快速seo整站优化排行

网页浏览器软件有哪些_crm管理系统软件哪家好_怎么优化一个网站关键词_快速seo整站优化排行

时间:2025/7/8 14:52:14来源:https://blog.csdn.net/tangweiguo03051987/article/details/146247831 浏览次数:1次
网页浏览器软件有哪些_crm管理系统软件哪家好_怎么优化一个网站关键词_快速seo整站优化排行

在 Flutter 开发中,工具类是提高代码复用性和开发效率的关键。本文将介绍 Flutter 中常用的工具类,包括:

  1. 路由工具类:支持带参数的路由跳转和参数获取。
  2. 对称加密工具类:使用 AES 算法实现数据加密和解密。
  3. 非对称加密工具类:使用 RSA 算法实现数据加密和解密。
  4. 日期工具类:日期格式化、解析、计算日期差等。
  5. 字符串工具类:字符串判空、截取、格式化等。
  6. 文件工具类:文件读写、路径获取等。
  7. 网络工具类:检查网络状态、发送网络请求等。
  8. 颜色工具类:颜色转换、生成随机颜色等。
  9. 日志工具类:统一管理日志输出。
  10. SharedPreferences 工具类:简化本地存储操作。

通过封装这些工具类,开发者可以更高效地完成日常开发任务。


正文

1. 路由工具类

支持带参数的路由跳转和参数获取。

实现代码
import 'package:flutter/material.dart';class NavigatorUtil {// 跳转到新页面(带参数)static void pushWithParams(BuildContext context, Widget page, {dynamic arguments}) {Navigator.push(context,MaterialPageRoute(builder: (context) => page,settings: RouteSettings(arguments: arguments),),);}// 从路由中获取参数static dynamic getRouteArgs(BuildContext context) {return ModalRoute.of(context)?.settings.arguments;}// 跳转到新页面并替换当前页面(带参数)static void pushReplacementWithParams(BuildContext context, Widget page, {dynamic arguments}) {Navigator.pushReplacement(context,MaterialPageRoute(builder: (context) => page,settings: RouteSettings(arguments: arguments),),);}// 跳转到新页面并清除所有历史页面(带参数)static void pushAndRemoveUntilWithParams(BuildContext context, Widget page, {dynamic arguments}) {Navigator.pushAndRemoveUntil(context,MaterialPageRoute(builder: (context) => page,settings: RouteSettings(arguments: arguments),),(route) => false,);}
}

2. 对称加密工具类

使用 AES 算法实现数据加密和解密。

安装依赖

pubspec.yaml 中添加 encrypt 插件:

dependencies:encrypt: ^5.0.0
实现代码
import 'package:encrypt/encrypt.dart';class SymmetricCryptoUtil {static final key = Key.fromUtf8('32characterslongpassphrase1234'); // 32字符密钥static final iv = IV.fromUtf8('16characterslong'); // 16字符IV// 加密static String encrypt(String plainText) {final encrypter = Encrypter(AES(key));final encrypted = encrypter.encrypt(plainText, iv: iv);return encrypted.base64;}// 解密static String decrypt(String encryptedText) {final encrypter = Encrypter(AES(key));final decrypted = encrypter.decrypt64(encryptedText, iv: iv);return decrypted;}
}

3. 非对称加密工具类

使用 RSA 算法实现数据加密和解密。

安装依赖

pubspec.yaml 中添加 pointycastle 插件:

dependencies:pointycastle: ^3.4.0
实现代码
import 'dart:convert';
import 'package:pointycastle/export.dart';class AsymmetricCryptoUtil {// 生成 RSA 密钥对static AsymmetricKeyPair<RSAPublicKey, RSAPrivateKey> generateKeyPair() {final keyGen = RSAKeyGenerator()..init(ParametersWithRandom(RSAKeyGeneratorParameters(BigInt.parse('65537'), 2048, 64),SecureRandom(),));return keyGen.generateKeyPair();}// 使用公钥加密static String encrypt(String plainText, RSAPublicKey publicKey) {final encryptor = OAEPEncoding(RSAEngine())..init(true, PublicKeyParameter<RSAPublicKey>(publicKey));final encrypted = encryptor.process(utf8.encode(plainText));return base64.encode(encrypted);}// 使用私钥解密static String decrypt(String encryptedText, RSAPrivateKey privateKey) {final decryptor = OAEPEncoding(RSAEngine())..init(false, PrivateKeyParameter<RSAPrivateKey>(privateKey));final decrypted = decryptor.process(base64.decode(encryptedText));return utf8.decode(decrypted);}
}

4. 日期工具类

用于日期格式化、解析、计算日期差等操作。

实现代码
import 'package:intl/intl.dart';class DateUtil {// 格式化日期static String formatDate(DateTime date, {String format = 'yyyy-MM-dd'}) {return DateFormat(format).format(date);}// 解析字符串为日期static DateTime parseDate(String dateString, {String format = 'yyyy-MM-dd'}) {return DateFormat(format).parse(dateString);}// 计算两个日期之间的天数差static int getDaysBetween(DateTime startDate, DateTime endDate) {return endDate.difference(startDate).inDays;}// 判断两个日期是否为同一天static bool isSameDay(DateTime date1, DateTime date2) {return date1.year == date2.year &&date1.month == date2.month &&date1.day == date2.day;}// 获取当前时间的字符串static String getCurrentTime({String format = 'yyyy-MM-dd HH:mm:ss'}) {return formatDate(DateTime.now(), format: format);}// 获取某一天的开始时间(00:00:00)static DateTime getStartOfDay(DateTime date) {return DateTime(date.year, date.month, date.day);}// 获取某一天的结束时间(23:59:59)static DateTime getEndOfDay(DateTime date) {return DateTime(date.year, date.month, date.day, 23, 59, 59);}
}

5. 字符串工具类

用于字符串的常用操作,如判空、截取、格式化等。

实现代码
class StringUtil {// 判断字符串是否为空static bool isEmpty(String? str) {return str == null || str.isEmpty;}// 判断字符串是否不为空static bool isNotEmpty(String? str) {return !isEmpty(str);}// 首字母大写static String capitalize(String str) {if (isEmpty(str)) return '';return str[0].toUpperCase() + str.substring(1);}// 去除空格static String trim(String str) {return str.trim();}// 忽略大小写判断是否包含static bool containsIgnoreCase(String str, String search) {return str.toLowerCase().contains(search.toLowerCase());}// 截取字符串static String substring(String str, int start, [int? end]) {if (isEmpty(str)) return '';return str.substring(start, end);}// 判断是否为邮箱格式static bool isEmail(String str) {final emailRegex = RegExp(r'^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$');return emailRegex.hasMatch(str);}// 判断是否为手机号格式static bool isPhoneNumber(String str) {final phoneRegex = RegExp(r'^[0-9]{10,11}$');return phoneRegex.hasMatch(str);}
}

6. 文件工具类

用于文件读写、路径获取等操作。

实现代码
import 'dart:io';
import 'package:flutter/services.dart';
import 'package:path_provider/path_provider.dart';class FileUtil {// 获取应用文档目录路径static Future<String> getAppDocumentsPath() async {Directory directory = await getApplicationDocumentsDirectory();return directory.path;}// 写入文件static Future<File> writeFile(String path, String content) async {final file = File(path);return file.writeAsString(content);}// 读取文件static Future<String> readFile(String path) async {final file = File(path);return file.readAsString();}// 复制资源文件到指定路径static Future<void> copyAssetToFile(String assetPath, String targetPath) async {final byteData = await rootBundle.load(assetPath);final file = File(targetPath);await file.writeAsBytes(byteData.buffer.asUint8List());}// 判断文件是否存在static Future<bool> isFileExists(String path) async {return File(path).exists();}// 删除文件static Future<void> deleteFile(String path) async {final file = File(path);if (await file.exists()) {await file.delete();}}
}

7. 网络工具类

用于检查网络状态、发送网络请求等。

实现代码
import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:dio/dio.dart';class NetworkUtil {// 检查网络是否连接static Future<bool> isConnected() async {var connectivityResult = await Connectivity().checkConnectivity();return connectivityResult != ConnectivityResult.none;}// 发送 GET 请求static Future<String> fetchData(String url) async {final response = await Dio().get(url);if (response.statusCode == 200) {return response.data.toString();} else {throw Exception('Failed to load data');}}// 发送 POST 请求static Future<String> postData(String url, Map<String, dynamic> data) async {final response = await Dio().post(url, data: data);if (response.statusCode == 200) {return response.data.toString();} else {throw Exception('Failed to post data');}}
}

8. 颜色工具类

用于颜色转换、生成随机颜色等。

实现代码
import 'dart:math';
import 'package:flutter/material.dart';class ColorUtil {// 将十六进制字符串转换为颜色static Color hexToColor(String hex) {hex = hex.replaceAll('#', '');if (hex.length == 6) {hex = 'FF$hex'; // 添加透明度}return Color(int.parse(hex, radix: 16));}// 将颜色转换为十六进制字符串static String colorToHex(Color color) {return '#${color.value.toRadixString(16).substring(2)}';}// 生成随机颜色static Color getRandomColor() {return Color.fromARGB(255,Random().nextInt(256),Random().nextInt(256),Random().nextInt(256),);}// 调整颜色亮度static Color adjustBrightness(Color color, double factor) {return Color.fromARGB(color.alpha,(color.red * factor).clamp(0, 255).toInt(),(color.green * factor).clamp(0, 255).toInt(),(color.blue * factor).clamp(0, 255).toInt(),);}
}

9. 日志工具类

用于统一管理日志输出。

实现代码
class LogUtil {// 调试日志static void debug(String message) {print('[DEBUG] $message');}// 信息日志static void info(String message) {print('[INFO] $message');}// 错误日志static void error(String message, {dynamic error}) {print('[ERROR] $message');if (error != null) {print(error);}}
}

10. SharedPreferences 工具类

用于简化本地存储操作。

实现代码
import 'package:shared_preferences/shared_preferences.dart';class SharedPreferencesUtil {// 保存字符串static Future<void> saveString(String key, String value) async {final prefs = await SharedPreferences.getInstance();await prefs.setString(key, value);}// 获取字符串static Future<String?> getString(String key) async {final prefs = await SharedPreferences.getInstance();return prefs.getString(key);}// 删除键值对static Future<void> remove(String key) async {final prefs = await SharedPreferences.getInstance();await prefs.remove(key);}// 保存布尔值static Future<void> saveBool(String key, bool value) async {final prefs = await SharedPreferences.getInstance();await prefs.setBool(key, value);}// 获取布尔值static Future<bool?> getBool(String key) async {final prefs = await SharedPreferences.getInstance();return prefs.getBool(key);}
}

总结

本文整理了 Flutter 开发中常用的工具类,包括路由、加密、日期、字符串、文件、网络、颜色、日志和本地存储等功能。通过封装这些工具类,开发者可以显著提高代码的复用性和开发效率。希望本文对您的 Flutter 开发有所帮助!

关键字:网页浏览器软件有哪些_crm管理系统软件哪家好_怎么优化一个网站关键词_快速seo整站优化排行

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: