Flutter:包无法使用 rootBundle.loadString 加载字符串资源 - 资产缩进正确

Jam*_*ock 3 dart flutter flutter-dependencies

我有一个项目使用相对路径消耗驱动器上的另一个包:

project1(使用 flutter create project1 设置为完整的 flutter 项目)

project2(使用 flutter create --template=package 设置

project1 的 packages.yaml 执行以下操作: dependencyancies: project1: path: ../project2

project2 的packages.yaml 执行此操作:

颤振:资产:-lang/en.json

哪个有效,一切都看到其他一切,并且没有关于资产路径的投诉,并且我已经验证它在资产之前恰好有 2 个空格:并且在 ofre - lang/en.json 之前正好有 4 个实际空格

当project2尝试以代码形式project2加载lang/en.json时,就会出现问题:

最终 jsonString =等待 rootBundle.loadString('lang/en.json');

我在 loadString 函数上收到“无法加载资产 ${key}”。

但是,如果我采用完全相同的代码并将其放在 project1 上并精确复制文件夹并在packages.yaml 中复制完全相同的资产标签,则project1 加载文件没有问题。如果我什至将资源链接留在项目 1 上,那么项目 2 也可以很好地加载它们。

这是一个错误,还是我对包模板版本做错了什么?

Tru*_*oan 5

我有同样的问题。我找到了解决方案:在project2中,执行以下步骤:

  1. 创建资产文件夹
  2. 创建 lang 文件夹(或任何其他文件夹名称)
  3. 在 lang 文件夹中创建 json 文件。例如:en.json、vi.json...
  4. 在项目的pubspec.yaml中,需要声明资产:
flutter:
  assets:
    - assets/lang/vi.json
    - assets/lang/en.json
Run Code Online (Sandbox Code Playgroud)
  1. 当使用 loadString 时,路径将是:
await rootBundle.loadString('packages/language_pack/assets/langen.json');
Run Code Online (Sandbox Code Playgroud)

请注意,packages 是复数形式,language_pack 是包名称