Flutter工具集插件toolkit的使用
Flutter工具集插件toolkit的使用
Toolkit
这只是一个简单的Flutter工具集插件。其中包含了一些API,用于帮助操作地图(map)、字符串(string)、随机数(random)、睡眠(sleep)和媒体查询(media query)。
使用方法
1. 添加依赖
在你的pubspec.yaml
文件中添加toolkit
作为依赖项:
dependencies:
toolkit: ^0.3.1
2. 安装依赖
在终端运行以下命令来安装依赖:
flutter pub get
3. 导入库
在你的Dart文件中导入toolkit
库:
import 'package:toolkit/toolkit.dart';
Kit Map
功能列表
-
clone(Map<String, dynamic> json)
=>Map<String, dynamic>
- 克隆一个映射(map)到新的映射。
-
toStringify()
=>String
- 将映射编码为字符串。
-
toStringifyTransform(ToolkitCase mode)
=>String
- 将映射编码为字符串,并转换键。
-
toMapTransform(ToolkitCase mode)
=>Map<dynamic, dynamic>
- 新建映射,并转换键。
-
parse(String mapString)
=>void
- 将JSON字符串解析为映射。
-
set(dynamic key, dynamic value)
=>void
- 设置映射值。
-
getString(String key)
=>String?
- 获取映射值作为字符串。
-
getInt(String key)
=>int?
- 获取映射值作为整数。
-
getDouble(String key)
=>double?
- 获取映射值作为双精度浮点数。
-
getBoolean(String key)
=>bool?
- 获取映射值作为布尔值。
-
getMap(String key)
=>Map<dynamic, dynamic>?
- 获取映射值作为映射。
-
getList(String key)
=>List<dynamic>?
- 获取映射值作为列表。
-
get<T>(String key)
=>T?
- 获取映射值作为特定类型。
Kit String
功能列表
-
toSentenceFromCamelCase()
=>String
- 将驼峰式命名格式转换为句子格式。
-
toSentenceFromSnakeCase()
=>String
- 将蛇形命名格式转换为句子格式。
-
toCapitalCase()
=>String
- 转换为大写格式。
-
toSnakeCase()
=>String
- 转换为蛇形命名格式。
-
toCamelCase()
=>String
- 转换为驼峰式命名格式。
-
toHyphenCase()
=>String
- 转换为连字符格式。
-
limitString(String str, int length)
=>String
- 限制字符串长度。
-
limitStringAppend(String str, int length, String append)
=>String
- 限制字符串长度,并追加另一个字符串。
-
isEmail
=>bool
- 检查字符串是否符合有效的电子邮件格式。
-
isContainsAlpha
=>bool
- 检查字符串是否包含字母。
-
isContainsAlphaLowercase
=>bool
- 检查字符串是否包含小写字母。
-
isContainsAlphaUppercase
=>bool
- 检查字符串是否包含大写字母。
-
isContainsNumeric
=>bool
- 检查字符串是否包含数字。
-
isContainsSpecialCharacters
=>bool
- 检查字符串是否包含特殊字符。
-
isOnlyAlpha
=>bool
- 检查字符串是否只包含字母。
-
isOnlyAlphaLowercase
=>bool
- 检查字符串是否只包含小写字母。
-
isOnlyAlphaUppercase
=>bool
- 检查字符串是否只包含大写字母。
-
isOnlyNumeric
=>bool
- 检查字符串是否只包含数字。
Kit Sleep
功能列表
-
sleep(Duration duration)
=>Future
- 通过指定时长设置睡眠时间。
-
sleepMilliseconds(int milliseconds)
=>Future
- 以毫秒为单位设置睡眠时间。
-
sleepSeconds(int seconds)
=>Future
- 以秒为单位设置睡眠时间。
-
sleepMinutes(int minutes)
=>Future
- 以分钟为单位设置睡眠时间。
-
sleepHours(int hours)
=>Future
- 以小时为单位设置睡眠时间。
-
sleepDays(int days)
=>Future
- 以天为单位设置睡眠时间。
Kit Random
功能列表
-
string(String chars, int length)
=>String
- 从特定字符和长度生成随机字符串。
-
stringAlpha(int length)
=>String
- 生成只包含字母的随机字符串(包括大小写)。
-
stringAlphaLowercase(int length)
=>String
- 生成只包含小写字母的随机字符串。
-
stringAlphaUppercase(int length)
=>String
- 生成只包含大写字母的随机字符串。
-
stringAlphaNumeric(int length)
=>String
- 生成包含字母和数字的随机字符串(包括大小写)。
-
stringNumeric(int length)
=>String
- 生成只包含数字的随机字符串。
-
specialCharacters(int length)
=>String
- 生成包含特殊字符的随机字符串。
-
numeric(int max)
=>int
- 生成随机整数。
-
numericBetween(int min, int max)
=>int
- 在最小值和最大值之间生成随机整数。
-
randomBoolean()
=>bool
- 生成随机布尔值。
-
randomColorHex()
=>String
- 生成随机颜色十六进制值。
Kit RegExp
功能列表
-
containsAlpha(String str)
=>bool
- 检查字符串是否包含字母。
-
containsAlphaLowercase(String str)
=>bool
- 检查字符串是否包含小写字母。
-
containsAlphaUppercase(String str)
=>bool
- 检查字符串是否包含大写字母。
-
containsNumeric(String str)
=>bool
- 检查字符串是否包含数字。
-
onlyAlpha(String str)
=>bool
- 检查字符串是否只包含字母。
-
onlyAlphaLowercase(String str)
=>bool
- 检查字符串是否只包含小写字母。
-
onlyAlphaUppercase(String str)
=>bool
- 检查字符串是否只包含大写字母。
-
onlyNumeric(String str)
=>bool
- 检查字符串是否只包含数字。
-
email(String str)
=>bool
- 检查字符串是否符合有效的电子邮件格式。
-
containsSpecialCharacters(String str)
=>bool
- 检查字符串是否包含特殊字符。
Kit MediaQuery
功能列表
-
getSize(BuildContext context)
=>Size
- 获取屏幕尺寸。
-
getWidth(BuildContext context, { double size = 1 })
=>double
- 获取屏幕宽度,可以调整大小(介于0和1之间)。
-
getHeight(BuildContext context, { double size = 1 })
=>double
- 获取屏幕高度,可以调整大小(介于0和1之间)。
示例
// 创建新的映射
var map1 = {};
var map2 = {};
// 设置映射1的值
map1.set('keyA', 1);
map1.set('keyB', 2);
map1.set('keyC', 3);
// 设置映射2的值
map2.set('keyD', 'hello world');
map2.set('keyF', {'key': 'value'});
// 从映射1中删除keyA
map1.delete('keyA');
// 转换映射
var transformMap1Upper = map1.toMapTransform(ToolkitCase.upper);
var transformMap1Lower = map1.toMapTransform(ToolkitCase.lower);
var transformMap1Capital = map1.toMapTransform(ToolkitCase.capital);
// 转换映射字符串
var transformMap2Upper = map2.toStringifyTransform(ToolkitCase.upper);
var transformMap2Lower = map2.toStringifyTransform(ToolkitCase.lower);
var transformMap2Capital = map2.toStringifyTransform(ToolkitCase.capital);
// 从JSON字符串解析映射
var map3 = {};
String jsonString = '{"name": "SpiderMan", "age": 40, "fly": true}';
map3.parse(jsonString);
map3.set('weapons', ['Pulse Bolt', 'Energy Blade', 'Tri-beam', 'Uni-beam', 'Smart Missiles']);
// 获取映射值
var name = map3.getString("name");
var age = map3.getInt("age");
var canFly = map3.getBoolean("fly");
var weapons = map3.get("weapons");
var weapons2 = map3.getList("weapons");
print("===== 映射示例 =====");
print(transformMap1Lower); // {keyb: 2, keyc: 3}
print(transformMap1Upper); // {KEYB: 2, KEYC: 3}
print(transformMap1Capital); // {KeyB: 2, KeyC: 3}
print(transformMap2Lower); // {"keyd":"hello world","keyf":{"key":"value"}}
print(transformMap2Upper); // {"KEYD":"hello world","KEYF":{"KEY":"value"}}
print(transformMap2Capital); // {"KeyD":"hello world","KeyF":{"Key":"value"}}
print(name); // SpiderMan
print(age); // 40
print(canFly); // true
print(weapons); // [Pulse Bolt, Energy Blade, Tri-beam, Uni-beam, Smart Missiles]
print(weapons2); // [Pulse Bolt, Energy Blade, Tri-beam, Uni-beam, Smart Missiles]
// 清空映射
map1.clear();
map2.clear();
map3.clear();
var randomInt = t.randomInt(10);
var randomIntBetween = t.randomIntBetween(5, 8);
var randomString = t.randomString("RANDOMIZE", 4);
var randomStringAlpha = t.randomStringAlpha(12);
var randomStringAlphaLower = t.randomStringAlphaLowercase(12);
var randomStringAlphaUpper = t.randomStringAlphaUppercase(12);
var randomStringAlphaNumeric = t.randomStringAlphaNumeric(12);
var randomStringNumeric = t.randomStringNumeric(12);
var randomBoolean = t.randomBoolean();
double randomDouble = t.randomDouble();
String randomColorHex = t.randomColorHex();
print("===== 随机示例 =====");
print(randomInt); // 3
print(randomIntBetween); // 6
print(randomString); // DEEZ
print(randomStringAlpha); // VYRJvFwnBkyI
print(randomStringAlphaLower); // ulyzaqakjsic
print(randomStringAlphaUpper); // GVLEREOOBHIU
print(randomStringAlphaNumeric); // cTof58MhnlUd
print(randomStringNumeric); // 261679006839
print(randomBoolean); // false
print(randomDouble); // 0.9711403523337846
print(randomColorHex); // #0B8EBB
String alpha = "ABCabc";
String alphaLowercase = "abcdef";
String alphaUppercase = "ABCDEF";
String alphaNumeric = "ABCDEF123";
String numeric = "123456";
print("===== 正则表达式示例 =====");
print("==> 包含字母");
print(alpha + " - " + Toolkit.regex.containsAlpha(alpha).toString()); // ABCabc - true
print(alphaLowercase + " - " + Toolkit.regex.containsAlpha(alphaLowercase).toString()); // abcdef - true
print(alphaUppercase + " - " + Toolkit.regex.containsAlpha(alphaUppercase).toString()); // ABCDEF - true
print(alphaNumeric + " - " + Toolkit.regex.containsAlpha(alphaNumeric).toString()); // ABCDEF123 - true
print(numeric + " - " + Toolkit.regex.containsAlpha(numeric).toString()); // 123456 - false
print("==> 包含小写字母");
print(alpha + " - " + Toolkit.regex.containsAlphaLowercase(alpha).toString()); // ABCabc - true
print(alphaLowercase + " - " + Toolkit.regex.containsAlphaLowercase(alphaLowercase).toString()); // abcdef - true
print(alphaUppercase + " - " + Toolkit.regex.containsAlphaLowercase(alphaUppercase).toString()); // ABCDEF - false
print(alphaNumeric + " - " + Toolkit.regex.containsAlphaLowercase(alphaNumeric).toString()); // ABCDEF123 - false
print(numeric + " - " + Toolkit.regex.containsAlphaLowercase(numeric).toString()); // 123456 - false
print("==> 包含大写字母");
print(alpha + " - " + Toolkit.regex.containsAlphaUppercase(alpha).toString()); // ABCabc - true
print(alphaLowercase + " - " + Toolkit.regex.containsAlphaUppercase(alphaLowercase).toString()); // abcdef - false
print(alphaUppercase + " - " + Toolkit.regex.containsAlphaUppercase(alphaUppercase).toString()); // ABCDEF - true
print(alphaNumeric + " - " + Toolkit.regex.containsAlphaUppercase(alphaNumeric).toString()); // ABCDEF123 - true
print(numeric + " - " + Toolkit.regex.containsAlphaUppercase(numeric).toString()); // 123456 - false
print("==> 包含数字");
print(alpha + " - " + Toolkit.regex.containsNumeric(alpha).toString()); // ABCabc - false
print(alphaLowercase + " - " + Toolkit.regex.containsNumeric(alphaLowercase).toString()); // abcdef - false
print(alphaUppercase + " - " + Toolkit.regex.containsNumeric(alphaUppercase).toString()); // ABCDEF - false
print(alphaNumeric + " - " + Toolkit.regex.containsNumeric(alphaNumeric).toString()); // ABCDEF123 - true
print(numeric + " - " + Toolkit.regex.containsNumeric(numeric).toString()); // 123456 - true
print("==> 只包含字母");
print(alpha + " - " + Toolkit.regex.onlyAlpha(alpha).toString()); // ABCabc - true
print(alphaLowercase + " - " + Toolkit.regex.onlyAlpha(alphaLowercase).toString()); // abcdef - true
print(alphaUppercase + " - " + Toolkit.regex.onlyAlpha(alphaUppercase).toString()); // ABCDEF - true
print(alphaNumeric + " - " + Toolkit.regex.onlyAlpha(alphaNumeric).toString()); // ABCDEF123 - false
print(numeric + " - " + Toolkit.regex.onlyAlpha(numeric).toString()); // 123456 - false
print("==> 只包含小写字母");
print(alpha + " - " + Toolkit.regex.onlyAlphaLowercase(alpha).toString()); // ABCabc - false
print(alphaLowercase + " - " + Toolkit.regex.onlyAlphaLowercase(alphaLowercase).toString()); // abcdef - true
print(alphaUppercase + " - " + Toolkit.regex.onlyAlphaLowercase(alphaUppercase).toString()); // ABCDEF - false
print(alphaNumeric + " - " + Toolkit.regex.onlyAlphaLowercase(alphaNumeric).toString()); // ABCDEF123 - false
print(numeric + " - " + Toolkit.regex.onlyAlphaLowercase(numeric).toString()); // 123456 - false
print("==> 只包含大写字母");
print(alpha + " - " + Toolkit.regex.onlyAlphaUppercase(alpha).toString()); // ABCabc - false
print(alphaLowercase + " - " + Toolkit.regex.onlyAlphaUppercase(alphaLowercase).toString()); // abcdef - false
print(alphaUppercase + " - " + Toolkit.regex.onlyAlphaUppercase(alphaUppercase).toString()); // ABCDEF - true
print(alphaNumeric + " - " + Toolkit.regex.onlyAlphaUppercase(alphaNumeric).toString()); // ABCDEF123 - false
print(numeric + " - " + Toolkit.regex.onlyAlphaUppercase(numeric).toString()); // 123456 - false
print("==> 只包含数字");
print(alpha + " - " + Toolkit.regex.onlyNumeric(alpha).toString()); // ABCabc - false
print(alphaLowercase + " - " + Toolkit.regex.onlyNumeric(alphaLowercase).toString()); // abcdef - false
print(alphaUppercase + " - " + Toolkit.regex.onlyNumeric(alphaUppercase).toString()); // ABCDEF - false
print(alphaNumeric + " - " + Toolkit.regex.onlyNumeric(alphaNumeric).toString()); // ABCDEF123 - false
print(numeric + " - " + Toolkit.regex.onlyNumeric(numeric).toString()); // 123456 - true
print("===== 睡眠示例 =====");
// 等待5秒钟
print(DateTime.now()); // 2020-07-05 21:02:21.112141
await t.sleepSeconds(5);
print(DateTime.now()); // 2020-07-05 21:02:26.120927
示例代码
import 'map.dart';
import 'random.dart';
import 'regexp.dart';
import 'sleep.dart';
main() async {
mapExample();
print("\n\n");
randomExample();
print("\n\n");
regexpExample();
print("\n\n");
sleepExample();
}
更多关于Flutter工具集插件toolkit的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter工具集插件toolkit的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter开发中,toolkit
并不是一个官方或广泛认可的特定插件名称。不过,通常当我们谈论“工具集插件”时,我们可能指的是一系列用于特定任务或功能集合的插件。Flutter社区提供了许多这样的插件,用于增强应用的功能,比如UI组件、数据存储、网络通信等。
为了展示如何使用Flutter中的一些常用插件,我将给出几个常见插件的代码示例,这些插件可以视为一个“工具集”的一部分。这些示例将涵盖UI组件(如fluttertoast
用于显示Toast消息)、网络通信(如http
插件)和数据存储(如shared_preferences
)。
1. Fluttertoast(显示Toast消息)
首先,在pubspec.yaml
文件中添加依赖:
dependencies:
fluttertoast: ^8.0.8
然后,在Dart代码中导入并使用它:
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter Toast Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
Fluttertoast.showToast(
msg: "Hello Flutter!",
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.BOTTOM,
backgroundColor: Colors.black,
textColor: Colors.white,
fontSize: 16.0
);
},
child: Text('Show Toast'),
),
),
),
);
}
}
2. http(网络通信)
在pubspec.yaml
文件中添加依赖:
dependencies:
http: ^0.13.3
然后在Dart代码中导入并使用它:
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String responseData = '';
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('HTTP Request Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(responseData),
SizedBox(height: 20),
ElevatedButton(
onPressed: fetchData,
child: Text('Fetch Data'),
),
],
),
),
),
);
}
void fetchData() async {
var response = await http.get(Uri.parse('https://jsonplaceholder.typicode.com/todos/1'));
if (response.statusCode == 200) {
setState(() {
responseData = jsonDecode(response.body)['title'];
});
} else {
setState(() {
responseData = 'Failed to load data';
});
}
}
}
3. shared_preferences(数据存储)
在pubspec.yaml
文件中添加依赖:
dependencies:
shared_preferences: ^2.0.13
然后在Dart代码中导入并使用它:
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _savedValue = 'No Value';
@override
void initState() {
super.initState();
_readSavedValue();
}
Future<void> _readSavedValue() async {
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
setState(() {
_savedValue = sharedPreferences.getString('saved_key') ?? 'No Value';
});
}
Future<void> _saveValue() async {
SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
await sharedPreferences.setString('saved_key', 'Hello Flutter!');
setState(() {
_savedValue = 'Hello Flutter!';
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Shared Preferences Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Saved Value: $_savedValue'),
SizedBox(height: 20),
ElevatedButton(
onPressed: _saveValue,
child: Text('Save Value'),
),
],
),
),
),
);
}
}
这些示例展示了如何在Flutter应用中使用一些常见的插件来增强功能。当然,Flutter生态系统中有许多其他有用的插件,你可以根据项目需求选择合适的插件来集成。