Flutter实用功能扩展插件useful_extensions的使用

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

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) =&gt; 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) =&gt; e &gt;= 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&lt;int, double&gt;&gt; zipRes = firstList.zip(secondList).toList(); 
final List&lt;int&gt; firstList = [1, 2, 3, 4, 5];
final List&lt;int&gt; secondList = [1, 2, 3, 4, 5];

firstList.mapIndexed((index, item) =&gt; item + secondList[index]);
final List&lt;Person&gt; people = [Person('John', 1), Person('Max', 2)];

people.filter((e) =&gt; e.age &gt; 1); // 返回年龄大于18的人
final List&lt;Person&gt; people = [Person('John',  e), Person('Max', 2)];

people.filterNot((e) =&gt; e.age &gt;  e); // 返回年龄不大于18的人
final List&lt;Person?&gt; people = [Person('John',  e), null, Person('Max', 2)];

people.filterNotNull(); // 返回非空的人
final List&lt;int&gt; numbers = [1, 2, 3, 4, 5];

numbers.forEachIndexed((index, item) =&gt; print(index)});
列表扩展
final List&lt;int&gt; numbers = [1, 2, 3];

number.plus(1); // [2, 3, 4]
final List&lt;int&gt; number = [1, 2, 3];

number.minus(1); // [0, 1, 2]
final List&lt;int&gt; number = [ ] , 2, 3];

number.multiply( ); // [2, 4, 6]
final List&lt;double&gt; 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

1 回复

更多关于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插件进行字符串、日期和数字的操作。你可以根据实际需求进一步扩展这些功能。

回到顶部