Flutter:glob 库详解

简介: 本文主要介绍一下 glob 库的使用。

本文主要介绍一下 glob 库的使用。

glob 库的 pub 仓库地址:glob

1. glob 库的介绍

glob 库提供了文件和目录的通配符规则,它可以帮助我们检查某个 path 路径是否满足我们给定的通配符规则,同时支持列出所有满足通配符条件的文件和目录。

2. 依赖 glob 库

2.1 添加依赖

dependencies:
  glob: ^2.0.2

glob 的版本号参考:Stable versions of glob

2.2 导包

import 'package:glob/glob.dart';

3. glob 库的使用

3.1 构造一个 glob

想要创建一个 glob 对象,只需要使用 Glob() 即可。

import 'package:glob/glob.dart';

/// 最好定义为全局变量,方便复用
final dartFile = Glob("**.dart");

3.2 检查是否匹配

检查一个 path 是否满足 Glob 的条件,使用 Glob.matches()

import 'package:glob/glob.dart';

final dartFile = Glob("**.dart");

void main(List<String> arguments) {
   
  for (var argument in arguments) {
   
    if (dartFile.matches(argument)) print(argument);
  }
}

3.3 列出所有满足条件的文件

可以使用 Glob.list()Glob.listSync() 列出与 glob 匹配的所有文件。

import 'package:glob/glob.dart';
import 'package:glob/list_local_fs.dart';

final dartFile = Glob("**.dart");

// Recursively list all Dart files in the current directory.
void main(List<String> arguments) {
  for (var entity in dartFile.listSync()) {
    print(entity.path);
  }
}

4. glob 库的通配符规则

4.1 匹配当前目录下,文件名中的任意字符:*

例子: lib/*.dart 会匹配 lib/glob.dart 但不会匹配 lib/src/utils.dart

4.2 跨目录匹配文件名中的任意字符:**

例子:lib/**.dart 会匹配 lib/glob.dartlib/src/utils.dart

如果 ** 出现在 glob 的开头,它将不匹配 绝对路径 或以 ../ 开头 的路径。

例如,**.dart 不会匹配 /foo.dart,但 /**.dart 会匹配。

4.3 匹配任何单个字符:?

?字符匹配除 / 之外的 单个字符。 与 * 不同,它不会匹配多于或少于一个字符。

例如, test?.dart 将匹配 test1.dart 但不匹配 test10.darttest.dart

4.4 匹配给定范围内的字符:[...]

匹配几个字符中的一个。它可以包含单个字符,例如 [abc],在这种情况下,它将匹配任何这些字符;

它可以包含范围,例如 [a-zA-Z],在这种情况下,它将匹配范围内的任何字符;或者它可以包含两者的混合。

例如,test[a-zA-Z_].dart 将匹配 testx.darttestA.dart 和 test_.dart,但不匹配 test-.dart

如果它以 ^! 开头,则匹配所有 未提及 的字符。例如,test[^a-z].dart 将匹配 test1.dart 但不匹配 testa.dart

4.5 匹配几种可能性之一:{...,...}

{...,...} 结构匹配几个选项之一,每个选项本身都是一个 glob。

例如,lib/{*.dart,src/*} 匹配 lib/glob.dartlib/src/data.txt。 它可以包含任何数量大于一的选项,甚至可以包含嵌套选项。

4.6 转义字符:\

\ 字符可以在任何上下文中用于转义一个在语义上有意义的字符。 例如,*.dart 匹配 *.dart 但不匹配 test.dart

相关文章
|
3月前
|
存储 JavaScript 前端开发
盘点主流 Flutter 状态管理库2024
状态管理是每个应用不可缺少的,本文将会盘点下主流的状态管理包。
盘点主流 Flutter 状态管理库2024
|
Dart Android开发 iOS开发
比较 Flutter 日期选择器库【Flutter 专题 6】
日期选择器是对 UI 的有用补充,它使您的应用程序用户可以轻松地从日历中选择日期。无论您是在注册表单中添加出生日期字段,还是为用户提供预约时间段,您都可以使用日期选择器库来简化流程。 在本教程中,我们将探索 Flutter 的三个流行日期选择器库 Flutter、Flutter Datetime Picker、Flutter Date Range Picker 和date_time_picker。我们将检查每个库的功能并将每个库安装在一个简单的移动应用程序中。
833 0
比较 Flutter 日期选择器库【Flutter 专题 6】
|
5天前
|
开发框架 API 开发者
Flutter的动画:实现方式与动画库的技术探索
【4月更文挑战第26天】探索Flutter动画机制与库:基础动画、自定义动画、物理动画及Lottie、AnimatedWidgets、EasyAnimations等库的应用,助开发者实现丰富动画效果,提升用户体验。同时,了解性能优化技巧,如避免重绘、利用离屏渲染和GPU加速,确保动画流畅。 Flutter为移动应用开发带来强大动画支持。
|
15天前
|
安全 网络安全 开发工具
对象存储oss使用问题之flutter使用http库进行post请求文件上传返回400如何解决
《对象存储OSS操作报错合集》精选了用户在使用阿里云对象存储服务(OSS)过程中出现的各种常见及疑难报错情况,包括但不限于权限问题、上传下载异常、Bucket配置错误、网络连接问题、跨域资源共享(CORS)设定错误、数据一致性问题以及API调用失败等场景。为用户降低故障排查时间,确保OSS服务的稳定运行与高效利用。
38 1
|
4月前
|
存储 容器
Flutter 应用服务:主题、暗黑、国际化、本地化-app_service库
Flutter 应用服务:主题、暗黑、国际化、本地化-app_service库
81 0
|
4月前
|
Linux 开发者 iOS开发
Flutter笔记:桌面应用 窗口定制库 bitsdojo_window
Flutter笔记:桌面应用 窗口定制库 bitsdojo_window
86 0
|
5月前
Flutter 自定义ICON库
Flutter 自定义ICON库 Flutter提供了一些内置的ICON库,但在实际开发中,可能需要一些自定义的ICON图标。Flutter允许我们使用自定义图标,本文将介绍如何创建和使用自定义ICON库。
|
5月前
|
Android开发 计算机视觉 iOS开发
Flutter图片压缩库对比
Flutter图片压缩库对比 在Flutter应用程序开发中,图片压缩是一个非常重要的话题。在本文中,我们将比较一些常用的Flutter图片压缩库,以便您可以选择适合您应用程序的最佳选项。
|
11月前
|
Dart Unix Linux
Flutter:path 库详解
本文主要介绍一下 path 库的使用。
552 0
|
JavaScript 前端开发
Flutter官方推荐的状态管理库-Provider简单入门
Flutter官方推荐的状态管理库-Provider简单入门
181 0