Flutter功能扩展插件pure_extensions的使用
Flutter功能扩展插件pure_extensions的使用
Dart Extensions
Adds several extensions
类 | 描述 |
---|---|
GeoPoint | 定义一个地理点。 |
GeoBounds | 一个经纬度对齐的矩形。 |
CompositeMapSubscription | 作为一个可以一次性取消多个订阅的地图。 |
ReadableFile | 实现一个多平台接口以读取文件。 |
DurationBuilder | [Duration] 的构建器。 |
DateTimeBuilder | [DateTime] 的构建器。 |
UriBuilder | [Uri] 的构建器。 |
Color
Extensions color code we thank “TinyColor”
String
See recase for many other extensions
命令 | 描述 |
---|---|
ifEmpty | 如果字符串为空,则返回’text’,否则返回字符串。 |
isBlank | 如果字符串为空或只包含空格,则返回true,否则返回false。 |
ifBlank(() => ‘text’) | 如果字符串为空或只包含空格,则返回’text’,否则返回字符串。 |
更多方法…请完善此列表… |
num
它们扩展了’math’包中的方法。
Iterable<T>
See collection for many other extensions
命令 | 描述 |
---|---|
nullIfEmpty | 返回null或如果它是空的则返回true。 |
replaces | 用新元素替换旧元素。 |
whereNotContains | 返回没有不良元素的可迭代对象。 |
joinBy | 按函数连接元素。 |
joinElement | 连接元素。 |
containsEvery | 检查此可迭代对象中的每个元素是否都在[other]可迭代对象中。 |
containsAny | 检查此可迭代对象中的任何元素是否在[other]可迭代对象中。 |
groupBy | 根据结果将列表拆分为存储在对象中的子列表。 |
generateMap | 通过集合生成映射。 |
elementAtOrNull | 返回[index]th元素或如果不存在则返回null。 |
Iterable<num/int/double/BigInt/Rational>
命令 | 描述 |
---|---|
sum | 计算集合中所有数字的总和。 |
average | 计算集合中所有数字的平均值。 |
subtract | 计算集合中所有数字的减法。 |
divide | 计算集合中所有数字的除法。 |
multiply | 计算集合中所有数字的乘法。 |
sumAllBy | 将[number]加到集合中的所有项目上。 |
subtractAllBy | 从集合中的所有项目中减去[number]。 |
divideAllBy | 将[number]除以集合中的所有项目。 |
multiplyAllBy | 将[number]乘以集合中的所有项目。 |
Iterable<MapEntry<K,V>>
命令 | 描述 |
---|---|
toMap | 将条目的集合转换为[Map]。 |
toMapList | 根据键分组结果。 |
keys | 只返回键。 |
values | 只返回值。 |
Iterable<Future<T>>
命令 | 描述 |
---|---|
waitFutures | 与[Future.wait]方法相同。 |
anyFutures | 与[Future.any]方法相同。 |
Iterable<GeoPoint>
命令 | 描述 |
---|---|
center | 计算中心。 |
northeast | 计算东北角。 |
southwest | 计算西南角。 |
internalBounds | 计算内部角。 |
externalBounds | 计算外部角。 |
Map<K,V>
命令 | 描述 |
---|---|
whereNotNull | 返回不包含null键和值的[Map]。 |
generateIterable<K,V>(T Function(K key, V value) generator) | 从条目返回一个列表。 |
where | 返回满足[test]的所有条目的新映射。 |
firstWhere | 返回满足[test]的第一个条目。 |
lastWhere | 返回满足[test]的最后一个条目。 |
singleWhere | 返回满足[test]的唯一元素。 |
firstOrNull | 如果存在返回第一个条目,否则返回null。 |
lastOrNull | 如果存在返回最后一个条目,否则返回null。 |
singleOrNull | 如果存在返回唯一条目,否则返回null。 |
reduce | 通过迭代地组合条目来减少一个映射到单个值。 |
every | 检查此映射中的每个条目是否满足[test]。 |
any | 检查此映射中的任何条目是否满足[test]。 |
fold | 通过迭代地组合条目来减少一个映射到单个值。 |
get | 返回[key]的值。 |
getOrNull | 返回[key]的值或如果不存在则返回null。 |
DateTime (DateTimeBuilder)
命令 | 描述 |
---|---|
DateTime.copyWithPosition |
Duration (DurationBuilder)
命令 | 描述 |
---|---|
days | 人类天数表示(0 -> …) |
hours | 人类小时表示(0 -> 24) |
minutes | 人类分钟表示(0 -> 59) |
seconds | 人类秒数表示(0 -> 59) |
milliseconds | 人类毫秒表示(0 -> 999) |
microseconds | 人类微秒表示(0 -> 999) |
copyWith | 使用新值复制此对象。 |
toBuilder | 将此对象转换为构建器。 |
rebuild | 通过[DurationBuilder]更新此对象。 |
Stream<T>
命令 | 描述 |
---|---|
asStream | 返回自身并带有[Stream]类型。 |
asBroadcast | 返回一个广播流而不必不必要的包装它。 |
onTrackedErrorResume | 类似于[Rx.OnErrorExtensions.onErrorResume]但带有[StackTrace]。 |
onTrackedErrorReturnWith | 类似于[Rx.OnErrorExtensions.onErrorReturnWith]但带有[StackTrace]。 |
distinctRuntimeType | Stream.distinct] by [T.runtimeType]。 |
whereNotNull |
示例代码
import 'package:pure_extensions/pure_extensions.dart';
void main() {
// 使用String扩展
String str = "";
print(str.ifEmpty("Default Text")); // 输出: Default Text
// 使用Iterable<num>扩展
List<int> numbers = [1, 2, 3, 4, 5];
int sum = numbers.sum;
print(sum); // 输出: 15
// 使用Map<K,V>扩展
Map<String, int> map = {'a': 1, 'b': 2};
var filteredMap = map.whereNotNull();
print(filteredMap); // 输出: {a: 1, b: 2}
// 使用DateTimeBuilder扩展
DateTime now = DateTime.now();
var dateTimeBuilder = now.copyWithPosition(hour: 12, minute: 30);
print(dateTimeBuilder); // 输出: 当前日期时间,时钟设置为12:30
// 使用DurationBuilder扩展
Duration duration = Duration(days: 1, hours: 2, minutes: 30);
print(duration.days); // 输出: 1
print(duration.hours); // 输出: 2
print(duration.minutes); // 输出: 30
// 使用Iterable<Future<T>>扩展
List<Future<int>> futures = [
Future.delayed(Duration(seconds: 1), () => 1),
Future.delayed(Duration(seconds: 2), () => 2),
];
var results = await Future.wait(futures);
print(results); // 输出: [1, 2]
}
更多关于Flutter功能扩展插件pure_extensions的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter功能扩展插件pure_extensions的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,pure_extensions
是一个用于 Flutter 的功能扩展插件,它提供了一些实用的扩展函数来增强 Dart 语言的功能。下面是一些关于如何使用 pure_extensions
插件的代码示例。
首先,确保你已经在 pubspec.yaml
文件中添加了 pure_extensions
依赖:
dependencies:
flutter:
sdk: flutter
pure_extensions: ^最新版本号
然后,运行 flutter pub get
来获取依赖。
示例代码
1. 使用 String
扩展函数
pure_extensions
为 String
类提供了一些实用的扩展函数,比如 capitalize
、pluralize
等。
import 'package:flutter/material.dart';
import 'package:pure_extensions/pure_extensions.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('pure_extensions Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Hello World'.capitalize, // 将字符串首字母大写
style: TextStyle(fontSize: 24),
),
SizedBox(height: 20),
Text(
'1 apple'.pluralize(2), // 将字符串进行复数化处理
style: TextStyle(fontSize: 24),
),
],
),
),
),
);
}
}
2. 使用 List
扩展函数
pure_extensions
也为 List
类提供了一些扩展函数,比如 chunk
、flatten
等。
import 'package:flutter/material.dart';
import 'package:pure_extensions/pure_extensions.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
List<int> numbers = List.generate(10, (index) => index + 1);
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('pure_extensions List Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Chunk Demo:',
style: TextStyle(fontSize: 20),
),
SizedBox(height: 10),
// 将列表分成每组3个元素的子列表
Expanded(
child: ListView.builder(
itemCount: numbers.chunk(3).length,
itemBuilder: (context, index) {
return Column(
children: numbers.chunk(3)[index].map((e) => Text('$e')).toList(),
);
},
),
),
SizedBox(height: 20),
Text(
'Flatten Demo:',
style: TextStyle(fontSize: 20),
),
SizedBox(height: 10),
// 将嵌套的列表展平成一个列表
ListTile(
title: Text(
'[[1, 2], [3, 4], [5, 6]]'.replaceAll('[', '').replaceAll(']', '') ==
numbers.take(6).chunk(2).map((e) => [e]).toList().flatten().join(', '),
),
),
],
),
),
),
);
}
}
注意
- 上述示例中,
capitalize
和pluralize
是String
的扩展函数。 chunk
和flatten
是List
的扩展函数。- 在实际使用中,你可能需要根据
pure_extensions
的文档来查看最新的扩展函数列表和用法。
这些示例展示了如何使用 pure_extensions
来增强 Dart 的基本类型,使其更易于使用。希望这些示例对你有帮助!