Flutter核心扩展功能插件extensions_core的使用

Flutter核心扩展功能插件extensions_core的使用

一个全面的Flutter包,提供实用的扩展功能,简化常见的Flutter开发任务。这些扩展功能涵盖了字符串、列表、BuildContext、导航、SnackBars、日期时间等。通过减少样板代码并提高可读性来提升你的生产力。

特性

  • BuildContext扩展:简化导航、对话框和SnackBars。
  • 日期时间扩展:相对时间、格式化和日期检查。
  • 列表扩展:分块、去重和安全元素访问。
  • 字符串扩展:电子邮件验证、首字母大写、URL检查等。
  • 导航扩展:管理带有淡入淡出过渡的路由。
  • SnackBar扩展:轻松显示和管理SnackBars。

安装

pubspec.yaml文件中添加该包:

dependencies:
  extensions_core:
    path: <path-to-your-local-package>

或者发布后使用它:

dependencies:
  extensions_core: ^0.0.1

运行以下命令:

flutter pub get

使用

1. BuildContext扩展

简化导航、对话框和SnackBars。

import 'package:flutter/material.dart';
import 'extensions_core.dart';

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("Extensions Demo")),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            context.showSnackBar("这是一条SnackBar!"); // 显示SnackBar
          },
          child: Text("显示SnackBar"),
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          context.navigateTo(screen: AnotherPage(), fade: true); // 导航
        },
        child: Icon(Icons.navigate_next),
      ),
    );
  }
}

2. 字符串扩展

轻松验证和操作字符串。

import 'extensions_core.dart';

void main() {
  String email = "example@email.com";
  print(email.isEmail()); // true

  String text = "hello world";
  print(text.capitalize()); // Hello world
  print(text.toTitleCase()); // Hello World

  String url = "https://example.com";
  print(url.isUrl()); // true

  String phoneNumber = "+1234567890";
  print(phoneNumber.isPhoneNumber()); // true
}

3. 日期时间扩展

处理相对时间和格式化的日期。

import 'extensions_core.dart';

void main() {
  DateTime date = DateTime.now().subtract(Duration(minutes: 10));

  print(date.timeAgo()); // "10分钟前"
  print(date.isToday()); // true

  String formatted = date.format("yyyy-MM-dd");
  print(formatted); // "2024-06-17"
}

4. 列表扩展

执行高级列表操作,如分块、反转和过滤重复项。

import 'extensions_core.dart';

void main() {
  List<int> numbers = [1, 2, 3, 3, 4, 5, 6];

  print(numbers.takeLast(3)); // [4, 5, 6]
  print(numbers.distinct()); // [1, 2, 3, 4, 5, 6]
  print(numbers.chunked(2)); // [[1, 2], [3, 3], [4, 5], [6]]
  print(numbers.reversedList()); // [6, 5, 4, 3, 3, 2, 1]
}

5. 导航扩展

简化带有自定义过渡效果的导航。

import 'extensions_core.dart';

class HomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            context.navigateTo(screen: AnotherPage(), fade: true);
          },
          child: Text("转到另一个页面"),
        ),
      ),
    );
  }
}

6. SnackBar扩展

快速显示和管理SnackBars。

import 'extensions_core.dart';

void main(BuildContext context) {
  context.showSnackBar("这是一条SnackBar!");
  context.removeSnackBar();
}

更多关于Flutter核心扩展功能插件extensions_core的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter核心扩展功能插件extensions_core的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


extensions_core 是一个用于 Flutter 的扩展功能插件,它提供了一些常用的扩展方法和工具,可以帮助开发者更高效地编写 Flutter 应用。这个插件通常包含对 Dart 核心类(如 StringListMap 等)的扩展,以及对 Flutter 框架中一些常用类的扩展。

安装 extensions_core

要使用 extensions_core,首先需要在 pubspec.yaml 文件中添加依赖:

dependencies:
  extensions_core: ^1.0.0  # 请使用最新的版本号

然后运行 flutter pub get 来安装依赖。

使用 extensions_core

extensions_core 插件提供了许多有用的扩展方法。以下是一些常见的用法示例:

1. String 扩展

import 'package:extensions_core/extensions_core.dart';

void main() {
  String str = "Hello, World!";

  // 检查字符串是否为空或仅包含空白字符
  print(str.isBlank); // false

  // 将字符串转换为大写
  print(str.toUpperCase()); // HELLO, WORLD!

  // 将字符串转换为小写
  print(str.toLowerCase()); // hello, world!

  // 检查字符串是否包含特定子字符串
  print(str.containsIgnoreCase("world")); // true

  // 反转字符串
  print(str.reverse()); // !dlroW ,olleH
}

2. List 扩展

import 'package:extensions_core/extensions_core.dart';

void main() {
  List<int> numbers = [1, 2, 3, 4, 5];

  // 检查列表是否为空
  print(numbers.isEmpty); // false

  // 检查列表是否不为空
  print(numbers.isNotEmpty); // true

  // 获取列表的第一个元素,如果列表为空则返回 null
  print(numbers.firstOrNull); // 1

  // 获取列表的最后一个元素,如果列表为空则返回 null
  print(numbers.lastOrNull); // 5

  // 随机打乱列表
  numbers.shuffle();
  print(numbers); // 例如: [3, 1, 5, 2, 4]
}

3. Map 扩展

import 'package:extensions_core/extensions_core.dart';

void main() {
  Map<String, int> map = {'a': 1, 'b': 2, 'c': 3};

  // 检查 Map 是否为空
  print(map.isEmpty); // false

  // 检查 Map 是否不为空
  print(map.isNotEmpty); // true

  // 获取 Map 的键列表
  print(map.keysToList()); // ['a', 'b', 'c']

  // 获取 Map 的值列表
  print(map.valuesToList()); // [1, 2, 3]

  // 过滤 Map
  Map<String, int> filteredMap = map.filter((key, value) => value > 1);
  print(filteredMap); // {'b': 2, 'c': 3}
}

4. DateTime 扩展

import 'package:extensions_core/extensions_core.dart';

void main() {
  DateTime now = DateTime.now();

  // 获取当前日期的开始时间(00:00:00)
  print(now.startOfDay); // 例如: 2023-10-01 00:00:00.000

  // 获取当前日期的结束时间(23:59:59)
  print(now.endOfDay); // 例如: 2023-10-01 23:59:59.999

  // 检查日期是否在另一日期之前
  DateTime otherDate = DateTime(2023, 10, 2);
  print(now.isBefore(otherDate)); // true

  // 检查日期是否在另一日期之后
  print(now.isAfter(otherDate)); // false
}
回到顶部