Flutter功能扩展插件ready_extensions_dart的使用
Flutter功能扩展插件ready_extensions_dart的使用
如何使用
只需调用扩展方法:
print("55.5".isDouble); // 输出: true
接下来的部分将展示每种类型的扩展方法。
字符串扩展
/// 将英文数字转换为阿拉伯数字
String? englishToArabicNumbers();
/// 将阿拉伯数字转换为英文数字
String? arabicToEnglishNumbers();
/// 检查字符串是否可以转换为双精度浮点数
bool get isDouble;
/// 检查字符串是否为空或空字符串或空白字符
bool get isNullOrEmptyOrWhiteSpace;
/// 检查字符串是否为空或空字符串
bool get isNullOrEmpty;
/// 检查字符串是否为埃及本地电话号码
bool get isLocalEgyptianPhone;
/// 检查字符串是否为国际埃及电话号码
bool get isInternationalEgyptianPhone;
/// 检查字符串是否为沙特本地电话号码
bool get isLocalKsaPhone;
/// 检查字符串是否为国际沙特电话号码
bool get isInternationalKsaPhone;
/// 如果两个字符串相等(区分大小写)返回true
bool equal(String? str);
/// 如果两个字符串相等(不区分大小写)返回true
bool equalIgnoreCase(String? str);
/// 返回不含任何空格的字符串
String? get hardTrim;
/// 将字符串转换为字符列表
List<String> get toChars;
/// 检查字符串是否可以转换为日期时间
bool get isDateTime;
/// 如果字符串可以转换为日期时间则返回日期时间对象,否则返回null
DateTime? toDate();
/// 如果字符串可以转换为双精度浮点数则返回该值,否则返回null
double? toDouble();
/// 如果字符串可以转换为整数则返回该值,否则返回null
int? toInt();
/// 如果字符串可以转换为数字则返回该值,否则返回null
num? toNumber();
社交媒体扩展
/// 解析字符串为Angel公司URL
AngelCompanyUrl? get angelCompany;
/// 解析字符串为Angel职位URL
AngelJobUrl? get angelJob;
/// 检查字符串是否为有效的Angel公司URL
bool isAngelCompany([String? company]);
/// 检查字符串是否为有效的Angel职位URL
bool isAngelJob([String? jobId]);
/// 解析字符串为Crunchbase组织URL
CrunchbaseOrganizationUrl? get crunchbaseOrganization;
/// 解析字符串为Crunchbase个人URL
CrunchbasePersonUrl? get crunchbasePersonUrl;
/// 检查字符串是否为有效的Crunchbase组织URL
bool isCrunchbaseOrganization([String? organization]);
/// 检查字符串是否为有效的Crunchbase个人URL
bool isCrunchbasePerson([String? person]);
/// 解析字符串为Facebook URL
FacebookUrl? get facebookUrl;
/// 检查字符串是否为有效的Facebook URL
bool isFacebookUrl({String? name, String? id});
/// 解析字符串为GitHub URL
GitHubUrl? get gitHubUrl;
/// 检查字符串是否为有效的GitHub URL
bool isGitHubUrl({String? user, String? repositry});
/// 解析字符串为Google Plus URL
GooglePlusUrl? get googlePlusUrl;
/// 检查字符串是否为有效的Google Plus URL
bool isGooglePlusUrl({String? userName, String? id});
/// 解析字符串为Hacker News URL
HackerNewsUrl? get hackerNewsUrl;
/// 检查字符串是否为有效的Hacker News用户URL
bool isHackerNewsUserUrl({String? id});
/// 检查字符串是否为有效的Hacker News URL
bool isHackerNewsItemUrl({String? id});
/// 解析字符串为Instagram URL
InstagramUrl? get instagramUrl;
/// 检查字符串是否为有效的Instagram URL
bool isInstagramUrl({String? user});
/// 解析字符串为LinkedIn URL
LinkedInUrl? get linkedInUrl;
/// 检查字符串是否为有效的LinkedIn个人资料URL
bool isLinkedInProfile({String? permalink});
/// 检查字符串是否为有效的LinkedIn公司URL
bool isLinkedInCompaney({String? permalink});
/// 检查字符串是否为有效的LinkedIn帖子URL
bool isLinkedInPost({String? id});
/// 解析字符串为Reddit URL
RedditUrl? get redditUrl;
/// 检查字符串是否为有效的Reddit URL
bool isRedditUrl({String? user});
/// 解析字符串为Snapchat URL
SnapchatUrl? get snapchatUrl;
/// 检查字符串是否为有效的Snapchat URL
bool isSnapchatUrl({String? user});
/// 解析字符串为Stack Exchange URL
StackexchangeUrl? get stackexchangeUrl;
/// 检查字符串是否为有效的Stack Exchange URL
bool isStackexchangeUrl({String? user, String? id, String? community});
/// 解析字符串为Stack Overflow问题URL
StackoverflowQuestionUrl? get stackoverflowQuestionUrl;
/// 检查字符串是否为有效的Stack Overflow问题URL
bool isStackoverflowQuestionUrl({String? id});
/// 解析字符串为Stack Overflow用户URL
StackoverflowUserUrl? get stackoverflowUserUrl;
/// 检查字符串是否为有效的Stack Overflow用户URL
bool isStackoverflowUserUrl({String? id});
/// 解析字符串为Telegram个人资料URL
TelegramProfileUrl? get telegramProfileUrl;
/// 检查字符串是否为有效的Telegram个人资料URL
bool isTelegramProfileUrl({String? userName});
/// 解析字符串为Medium文章URL
MediumPostUrl? get mediumPostUrl;
/// 检查字符串是否为有效的Medium文章URL
bool isMediumPostUrl({String? postId});
/// 解析字符串为Medium个人资料URL
MediumUserUrl? get mediumUserUrl;
/// 检查字符串是否为有效的Medium个人资料URL
bool isMediumUserUrl({String? userName, String? id});
/// 解析字符串为Twitter状态URL
TwitterStatusUrl? get twitterStatusUrl;
/// 检查字符串是否为有效的Twitter状态URL
bool isTwitterStatusUrl({String? userName, String? tweetId});
/// 解析字符串为Twitter个人资料URL
TwitterUserUrl? get twitterUserUrl;
/// 检查字符串是否为有效的Twitter个人资料URL
bool isTwitterUserUrl({String? userName});
/// 解析字符串为YouTube频道URL
YoutubeChannelUrl? get youtubeChannelUrl;
/// 检查字符串是否为有效的YouTube频道URL
bool isYoutubeChannelUrl({String? id});
/// 解析字符串为YouTube视频URL
YoutubeVideoUrl? get youtubeVideoUrl;
/// 检查字符串是否为有效的YouTube视频URL
bool isYoutubeVideoUrl({String? id});
/// 解析字符串为YouTube个人资料URL
YoutubeUserUrl? get youtubeUserUrl;
/// 检查字符串是否为有效的YouTube个人资料URL
bool isYoutubeUserUrl({String? username});
布尔值扩展
/// 当为true时执行回调函数,否则执行其他回调函数
T? onTrue<T>(T callback, [T? otherCallBack]);
/// 当为true或null时执行回调函数,否则执行其他回调函数
T? onTrueOrNull<T>(T callback, [T? otherCallBack]);
/// 当为false或null时执行回调函数,否则执行其他回调函数
T? onFalseOrNull<T>(T callback, [T? otherCallBack]);
/// 当为false时执行回调函数,否则执行其他回调函数
T? onFalse<T>(T callback, [T? otherCallBack]);
/// 将布尔值转换为整数,0或1
int get toInt;
整数扩展
/// 如果整数等于0则返回false,否则返回true
bool get toBool;
数字扩展(整数或双精度浮点数)
/// 使用NumberFormat格式化当前数字
String format(NumberFormat format);
/// 删除数字末尾的零
/// 例如: 15.00 => 15
/// 如果指定了fractionDigits,则noTrailing(2)的结果为:
/// 15.5 => 15.50
/// 15.500 => 15.50
/// 15.00 => 15.00
String noTrailing([int? fractionDigits]);
/// 使用intl货币格式化数字
String currency({
String? locale,
String? name,
String? symbol,
int? decimalDigits,
String? customPattern,
});
/// 使用intl简单货币格式化数字
String simpleCurrency({
String? locale,
String? name,
int? decimalDigits,
});
/// 使用intl紧凑货币格式化数字
String compactCurrency({
String? locale,
String? name,
String? symbol,
int? decimalDigits,
String? customPattern,
});
/// 使用intl简单紧凑货币格式化数字
String compactSimpleCurrency({
String? locale,
String? name,
int? decimalDigits,
});
/// 使用intl紧凑格式化数字
String compact([String? locale]);
/// 使用intl紧凑长格式化数字
String compactLong([String? locale]);
/// 使用intl十进制模式格式化数字
String decimalPattern([String? locale]);
/// 使用intl百分比模式格式化数字
String percentPattern([String? locale]);
/// 使用intl科学计数法格式化数字
String scientificPattern([String? locale]);
/// 使用intl十进制百分比模式格式化数字
String decimalPercentPattern({
String? locale,
int? decimalDigits,
});
可迭代对象扩展
/// 获取匹配表达式的第一个元素,如果没有匹配项则返回null
T? firstOrDefault([bool Function(T element)? test]);
/// 获取匹配表达式的最后一个元素,如果没有匹配项则返回null
T? lastOrDefault([bool Function(T element)? test]);
/// 使用索引映射元素并返回新的可迭代对象
Iterable<E> indexedMap<E>(E Function(int index, T e) f);
/// 循环遍历元素并传递索引和元素参数
void indexedForEach(void Function(int index, T element) f);
/// 返回一个没有重复元素的新列表
/// 你可以使用`.toSet().toList()`,但顺序可能不同
List<T> removeDuplicates([bool Function(T a, T b)? compare]);
时间间隔扩展
/// 将持续时间格式化为可读字符串
String format({
int maxParts = 2,
int secondsToShowNow = 0,
DurationFormatter formatter = const DefaultDurationFormatter(),
});
/// 从持续时间中减去微秒
Duration minusMicroSeconds([int v = 1]);
/// 从持续时间中减去毫秒
Duration minusMilliSeconds([int v = 1]);
/// 从持续时间中减去秒
Duration minusSeconds([int v = 1]);
/// 从持续时间中减去分钟
Duration minusMinutes([int v = 1]);
/// 从持续时间中减去小时
Duration minusHours([int v = 1]);
/// 从持续时间中减去天数
Duration minusDays([int v = 1]);
/// 在持续时间上增加微秒
Duration plusMicroSeconds([int v = 1]);
/// 在持续时间上增加毫秒
Duration plusMilliSeconds([int v = 1]);
/// 在持续时间上增加秒
Duration plusSeconds([int v = 1]);
/// 在持续时间上增加分钟
Duration plusMinutes([int v = 1]);
/// 在持续时间上增加小时
Duration plusHours([int v = 1]);
/// 在持续时间上增加天数
Duration plusDays([int v = 1]);
完整示例Demo
以下是一个完整的示例Demo,展示了如何使用ready_extensions_dart
库:
import 'package:flutter/material.dart';
import 'package:ready_extensions_dart/ready_extensions_dart.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Ready Extensions Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () {
// 示例:检查字符串是否为双精度浮点数
print("55.5".isDouble);
},
child: Text('Check isDouble'),
),
ElevatedButton(
onPressed: () {
// 示例:将字符串转换为整数
print("1".toInt());
},
child: Text('Convert to Int'),
),
ElevatedButton(
onPressed: () {
// 示例:将字符串转换为日期时间
print("2023-10-10".toDate());
},
child: Text('Convert to DateTime'),
),
ElevatedButton(
onPressed: () {
// 示例:检查字符串是否为有效的Facebook URL
print("https://www.facebook.com/user".isFacebookUrl());
},
child: Text('Check Facebook URL'),
),
ElevatedButton(
onPressed: () {
// 示例:布尔值扩展
var value = true;
print(value.onTrue("yes"));
},
child: Text('Boolean Extension'),
),
],
),
),
),
);
}
}
更多关于Flutter功能扩展插件ready_extensions_dart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter功能扩展插件ready_extensions_dart的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter项目中集成和使用ready_extensions_dart
插件的示例代码案例。请注意,由于ready_extensions_dart
可能是一个假设或特定的插件名称,并且在Flutter的官方插件库中可能并不直接存在,我将以一个通用的Flutter插件集成流程来示范,你可以根据实际的ready_extensions_dart
插件文档进行调整。
1. 添加依赖
首先,你需要在pubspec.yaml
文件中添加ready_extensions_dart
插件的依赖。如果插件在pub.dev上可用,你可以直接添加如下依赖:
dependencies:
flutter:
sdk: flutter
ready_extensions_dart: ^x.y.z # 替换为实际版本号
然后运行flutter pub get
来安装依赖。
2. 导入插件
在你的Dart文件中导入该插件。例如,在main.dart
中:
import 'package:flutter/material.dart';
import 'package:ready_extensions_dart/ready_extensions_dart.dart'; // 根据实际插件导入路径
3. 使用插件的功能
假设ready_extensions_dart
插件提供了一些实用的扩展函数或类,你可以在你的代码中直接使用它们。以下是一个假设的示例,展示如何调用插件提供的功能:
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String result = "";
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('ready_extensions_dart Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Result:',
style: TextStyle(fontSize: 20),
),
Text(
result,
style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {
// 假设插件提供了一个名为someUtilityFunction的函数
setState(() {
result = ReadyExtensionsDart.someUtilityFunction("Hello, Flutter!");
});
},
child: Text('Call Utility Function'),
),
],
),
),
);
}
}
注意事项
- 插件文档:务必查阅
ready_extensions_dart
插件的官方文档,了解它提供的具体API和用法。 - 版本兼容性:确保插件版本与你的Flutter SDK版本兼容。
- 错误处理:在实际应用中,添加适当的错误处理逻辑,以防插件调用失败。
由于ready_extensions_dart
可能是一个假设的插件名称,以上代码仅作为示例,展示了如何在Flutter项目中集成和使用一个假设的插件。如果ready_extensions_dart
是实际存在的插件,请根据其官方文档进行调整。