Flutter实用功能扩展插件useful_extensions的使用
Flutter实用功能扩展插件useful_extensions的使用
关于此包
此包包含您在项目中可能发现有用的扩展。熟悉Kotlin语言的开发者会发现自己在这里找到了许多熟悉的东西,因为此包包含了许多来自该语言的方法,并且还会添加Flutter扩展。
贡献
请考虑贡献👍
- 添加新功能
- 修复错误
- 参与讨论
- 提供文档
- 创建pull请求
Dart
自定义类
final Pair<int, int> x = Pair(2, 2);
Bool扩展
if(email.isEmpty.not()){
checkEmailIsValid(email);
}
if(isEmailValid.and(isPasswordValid)){
register(email, password);
}
if(hasGoodMarks.or(hasBenefits)){
// Action()
}
对象扩展
logInfo(String message, [dynamic error]);
// 或者
logError(String message, [dynamic error]);
// 或者
logDebug(String message, [dynamic error]);
// 或者
logWarning(String message, [dynamic error]);
// 或者
logWtf(String message, [dynamic error]);
范围函数
final String? nullableString = null;
nullableString?.let((it) {
// 如果字符串不为空,则执行操作
});
final List<int> list = [1, 2, 3];
list.also((self) => print('List length ${self.length}'));
可迭代扩展
final List<int> numbers = [1, 2, 3, 4, 5];
numbers.elementAtOrNull(numbers.length) // 返回null
final List<int> numbers = [1, 2, 3, 4, 5];
numbers.find((e) => e >= 3) // 返回3
final List<int> numbers = [1, 2, 3, 4, 5];
numbers.getRandom() // 返回1到5之间的随机数
final List<int> firstList = [1, 2, 3];
final List<double> secondList = [1.0, 2.0, 3.0];
final List<Pair<int, double>> zipRes = firstList.zip(secondList).toList();
final List<int> firstList = [1, 2, 3, 4, 5];
final List<int> secondList = [1, 2, 3, 4, 5];
firstList.mapIndexed((index, item) => item + secondList[index]);
final List<Person> people = [Person('John', 1), Person('Max', 2)];
people.filter((e) => e.age > 1); // 返回年龄大于18的人
final List<Person> people = [Person('John', e), Person('Max', 2)];
people.filterNot((e) => e.age > e); // 返回年龄不大于18的人
final List<Person?> people = [Person('John', e), null, Person('Max', 2)];
people.filterNotNull(); // 返回非空的人
final List<int> numbers = [1, 2, 3, 4, 5];
numbers.forEachIndexed((index, item) => print(index)});
列表扩展
final List<int> numbers = [1, 2, 3];
number.plus(1); // [2, 3, 4]
final List<int> number = [1, 2, 3];
number.minus(1); // [0, 1, 2]
final List<int> number = [ ] , 2, 3];
number.multiply( ); // [2, 4, 6]
final List<double> number = [2.0, 4.0, 3.0];
number.divide( ); // [1.0, 2.0, 1.5]
更多关于Flutter实用功能扩展插件useful_extensions的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter实用功能扩展插件useful_extensions的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用useful_extensions
插件的示例代码。useful_extensions
是一个实用的Flutter扩展插件,它提供了一系列便捷的方法,用于简化常见的字符串、日期、数字等操作。
首先,确保你的Flutter项目中已经添加了useful_extensions
依赖。在pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter:
sdk: flutter
useful_extensions: ^最新版本号 # 替换为实际的最新版本号
然后,运行flutter pub get
来获取依赖。
以下是一些使用useful_extensions
插件的示例代码:
1. 字符串扩展
useful_extensions
提供了许多字符串操作方法,比如首字母大写、去除空格等。
import 'package:flutter/material.dart';
import 'package:useful_extensions/useful_extensions.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
String exampleString = "hello world";
String capitalizedString = exampleString.capitalize(); // "Hello world"
String trimmedString = exampleString.trimSpaces(); // "hello world"(如果字符串前后没有空格,则保持不变)
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('String Extensions Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Original String: $exampleString'),
Text('Capitalized String: $capitalizedString'),
Text('Trimmed String: $trimmedString'),
],
),
),
),
);
}
}
2. 日期扩展
日期扩展可以帮助你轻松地进行日期格式化、计算等操作。
import 'package:flutter/material.dart';
import 'package:useful_extensions/useful_extensions.dart';
import 'package:intl/intl.dart'; // 用于日期格式化显示
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
DateTime now = DateTime.now();
DateTime startOfDay = now.startOfDay(); // 获取当天开始时间
DateTime endOfDay = now.endOfDay(); // 获取当天结束时间
String formattedDate = now.formatDate(format: 'yyyy-MM-dd HH:mm:ss');
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Date Extensions Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Current Date & Time: $formattedDate'),
Text('Start of Day: ${startOfDay.toLocal().toString()}'),
Text('End of Day: ${endOfDay.toLocal().toString()}'),
],
),
),
),
);
}
}
3. 数字扩展
数字扩展提供了格式化为货币、百分比等功能。
import 'package:flutter/material.dart';
import 'package:useful_extensions/useful_extensions.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
double number = 1234567.89;
String formattedCurrency = number.formatCurrency(locale: 'en_US'); // "$1,234,567.89"
String formattedPercent = number.toPercent(precision: 2); // "123,456,789.00%" (注意:这里的实现可能需要根据实际需求调整,因为通常百分比不会这么大)
// 为了演示,这里简单处理一下百分比显示
String simplePercent = (number / 10000).toPercent(precision: 2); // "123.46%"
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Number Extensions Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Original Number: $number'),
Text('Formatted Currency: $formattedCurrency'),
Text('Formatted Percent (simplified): $simplePercent'),
],
),
),
),
);
}
}
以上代码展示了如何在Flutter项目中使用useful_extensions
插件进行字符串、日期和数字的操作。你可以根据实际需求进一步扩展这些功能。