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

相关文章
|
7月前
|
存储 JavaScript 前端开发
盘点主流 Flutter 状态管理库2024
状态管理是每个应用不可缺少的,本文将会盘点下主流的状态管理包。
352 2
盘点主流 Flutter 状态管理库2024
|
5月前
|
敏捷开发 前端开发 程序员
Hugeicons Flutter 图标库 | 4000+ 开源免费
在全栈开发的征途中,设计素材的匮乏往往是程序员的一大挑战,尤其是那些为MVP产品增添魅力的元素,比如图标(icons)。 一个优秀的免费图标库,对于快速搭建原型、优化视觉效果至关重要。今天,让我们聚焦于Flutter开发者的一个福音——Hugeicons图标库,它蕴藏着超过4000枚精心设计的图标,为你的应用程序注入无限创意潜力。
121 0
Hugeicons Flutter 图标库 | 4000+ 开源免费
|
4月前
|
Dart API
状态管理的艺术:探索Flutter的Provider库
状态管理的艺术:探索Flutter的Provider库
50 0
|
7月前
|
开发框架 API 开发者
Flutter的动画:实现方式与动画库的技术探索
【4月更文挑战第26天】探索Flutter动画机制与库:基础动画、自定义动画、物理动画及Lottie、AnimatedWidgets、EasyAnimations等库的应用,助开发者实现丰富动画效果,提升用户体验。同时,了解性能优化技巧,如避免重绘、利用离屏渲染和GPU加速,确保动画流畅。 Flutter为移动应用开发带来强大动画支持。
|
7月前
|
安全 网络安全 开发工具
对象存储oss使用问题之flutter使用http库进行post请求文件上传返回400如何解决
《对象存储OSS操作报错合集》精选了用户在使用阿里云对象存储服务(OSS)过程中出现的各种常见及疑难报错情况,包括但不限于权限问题、上传下载异常、Bucket配置错误、网络连接问题、跨域资源共享(CORS)设定错误、数据一致性问题以及API调用失败等场景。为用户降低故障排查时间,确保OSS服务的稳定运行与高效利用。
281 1
|
7月前
|
存储 容器
Flutter 应用服务:主题、暗黑、国际化、本地化-app_service库
Flutter 应用服务:主题、暗黑、国际化、本地化-app_service库
284 0
|
7月前
|
Linux 开发者 iOS开发
Flutter笔记:桌面应用 窗口定制库 bitsdojo_window
Flutter笔记:桌面应用 窗口定制库 bitsdojo_window
401 0
|
7月前
flutter中使用图标(含自制图标库方案)
flutter中使用图标(含自制图标库方案)
1668 0
|
7月前
Flutter 自定义ICON库
Flutter 自定义ICON库 Flutter提供了一些内置的ICON库,但在实际开发中,可能需要一些自定义的ICON图标。Flutter允许我们使用自定义图标,本文将介绍如何创建和使用自定义ICON库。
228 0
|
7月前
|
Android开发 计算机视觉 iOS开发
Flutter图片压缩库对比
Flutter图片压缩库对比 在Flutter应用程序开发中,图片压缩是一个非常重要的话题。在本文中,我们将比较一些常用的Flutter图片压缩库,以便您可以选择适合您应用程序的最佳选项。
216 0