Flutter功能扩展插件ready_extensions_dart的使用

发布于 1周前 作者 itying888 来自 Flutter

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

1 回复

更多关于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'),
            ),
          ],
        ),
      ),
    );
  }
}

注意事项

  1. 插件文档:务必查阅ready_extensions_dart插件的官方文档,了解它提供的具体API和用法。
  2. 版本兼容性:确保插件版本与你的Flutter SDK版本兼容。
  3. 错误处理:在实际应用中,添加适当的错误处理逻辑,以防插件调用失败。

由于ready_extensions_dart可能是一个假设的插件名称,以上代码仅作为示例,展示了如何在Flutter项目中集成和使用一个假设的插件。如果ready_extensions_dart是实际存在的插件,请根据其官方文档进行调整。

回到顶部