Как загрузить файл из указанного пакета c во флаттере? - PullRequest
0 голосов
/ 10 февраля 2020

Вот моя структура папок для пакета core:

/pubspec.yaml
/assets
   |-images
   |-lang
       |- en.json
       |- hi.json

У меня есть похожая структура для другого модуля под названием moduleA

Теперь, когда я загружаю файл json Я загружаю его так:

    await rootBundle.loadString('assets/lang/en.json');

Но проблема в том, что когда я использую экраны модуля 'core' в 'moduleA', модуль 'core' заглядывает внутрь 'moduleA', чтобы найти путь к файлу. Мне нужен способ указать, из какого пакета загружать файл:

Теперь я уже изучил ответ на вопрос об ударе и попробовал его, но у меня не получилось:

Как использовать rootBundle во флаттере для загрузки изображений?

выполнение rootBundle.loadString ('packages / core / assets / lang / en. json') все еще дает мне Ошибка: файл не найден, несмотря на то, что он указан в файле pubspe c .yaml и скопирован ресурс / папка в папке core / lib.

Итак, когда я загружаю строку, используя:

await rootBundle.loadString('packages/core/assets/lang/${locale.languageCode}.json');

Я получаю следующую ошибку:

Error: unable to find directory entry in pubspec.yaml: /Users/nateshmbhat/Desktop/nuclei-flutter-sdk/core/packages/core/assets/images/

Вот мое ядро ​​/ pubspe c .yaml:

flutter:
  assets:
    - packages/core/assets/lang/
    - packages/core/assets/images/

Я переместил папку ресурсов в ядро / lib /.

Что-то не так я здесь делаю? Есть идеи, как это исправить?

1 Ответ

0 голосов
/ 10 февраля 2020

Оказалось, что когда мы импортируем ресурсы внутри пакетов, нам нужно также указывать определенные c файлы, и просто папка с ними не работает.

Так что исправили следующие ошибки: D

flutter:
  assets:
    - packages/core/assets/lang/en.json
    - packages/core/assets/lang/sp.json
    - packages/core/assets/images/myimage.png
...