1

我目前正在使用该包path_provider进行初始化:Hivemain.dart

final appDocumentDirectory = await pathProvider.getApplicationDocumentsDirectory();
Hive.init(appDocumentDirectory.path);

我想从我的资产文件夹中嵌入一个本地数据库文件,并遵循 Youtube 教程(链接),他在其中使用path包将 databasePath 与数据库文件“连接”。这是代码:

_db = await openDatabase('assets/trails.db');
var databasePath = await getDatabasesPath();
var path = join(databasePath,'trails.db');

文档说:

  • path: path 包提供了操作路径的常用操作:join、split、normalizing等。
  • path_provider:用于查找文件系统上常用位置的 Flutter 插件。

但我现在的问题是,这两个包之间到底有什么区别?我是否可以从我的pubspec.yaml文件中删除其中一个并为两个用例使用一个包(以避免样板代码)?

4

1 回答 1

3

我认为答案是否定的。

path是一个操作路径的包:加入它们,转换为绝对路径,添加前缀,获取路径信息等等。

path_provider专用于更具体的操作系统操作,例如下载、临时文件、应用程序文档根据操作系统存储在不同的位置(显然,Android 中的文件结构与 iOS、Windows、Linux 等不同)。

为了比较这两者,包有不同的目的 -path实际“使用”路径path_provider,同时为您提供基于操作系统的资源的确切路径。因此,您不能将一个替换为另一个,如果您需要同时使用两者,仅此而已,只需同时使用它们即可。

于 2021-05-23T15:24:48.137 回答