簡體   English   中英

如何在flutter中從不同的包中讀取資產JSON文件?

[英]How to read assets JSON file from different package in flutter?

我正在開發一個 Flutter 應用程序,其中我為主應用程序使用了多個插件

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

每個插件都有自己的示例文件夾,它幫助我使用單獨保存在純 flutter 包中的常見圖像和圖標來測試 UI 和大部分 UI:

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 數據來查看 UI。

我如何解決這個問題:

在主應用程序pubspec.yaml文件中導入包和插件

registration_plugin:
  path: ../registration_plugin  <--- this is plugin
framework_utils:
  path: ../framework_utils      <--- this is package

我在 framework_utils 資產文件夾中有 json 文件和圖標,例如:

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 文件

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

這是我的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM