Как прочитать файлы активов JSON из другого пакета в флаттер? - PullRequest
0 голосов
/ 06 февраля 2020

Я работаю над приложением флаттера, в котором я использую несколько плагинов для основного приложения.

main_app
-plugin1
 -example
-plugin2
 -example
-plugin3
 --example
package as well 
- <package_name>

каждый плагин имеет свою собственную папку с примерами, которая помогает мне тестировать пользовательский интерфейс и большую часть пользовательского интерфейса с использованием обычных изображений. и значки, которые отдельно хранятся в чистом флаттере:

framework_utilities:<--(package)
   assets:
    - assets/
    - assets/images/green/2x/
    - assets/mockup/reg_state.json <--- JSON file
   lib
     src
       constant

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

Image.asset("assets/barcode.png", package: "framework_utilities", width: 70.0, height: pad_30),

Теперь мое требование - я хотите макетировать все приложение без включения файла json на уровень основного приложения.

Работает нормально, если я включаю файл json в папку активов в основном приложении, но я не хочу делать копию файла json внутри плагина и приложения, я хочу сохранить его в Одно место и читать его.

Я пытался

rootBundle.loadString('assets/reg_state.json')

, он работает только на уровне отдельных плагинов.

Почему мне нужно прочитать json файл?

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

1 Ответ

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

Как я могу решить эту проблему:

импортировать пакет и плагин в основное приложение :

assets:
  - assets/
  - assets/images/green/2x/
  - assets/reg_state.json
  - assets/user_state.json

Теперь, если вы хотите прочитать этот файл или значки в плагине, я звоню, как показано ниже:

Для изображения

Image.asset("assets/user.png", package: "framework_utils", width: 70.0, height: pad_30),

Для JSON file

 String path = 'packages/framework_utils/assets/user_state.json';
 String jobsString = await rootBundle.loadString(path); 
 List<dynamic> users = await jsonDecode(jobsString);

Это решение для меня.

...