【问题标题】:How to load json file before runapp in flutter?如何在flutter中运行app之前加载json文件?
【发布时间】:2021-12-03 23:13:09
【问题描述】:

我必须在我的 Flutter 应用程序的 main 中的 runApp 之前加载 json 内容。 我有一个 Future 函数(LoadLanguage),它在变量(LanguageData)中加载 json 文件,所以我可以在我的应用程序中使用提到的变量的值:

Future<void> LoadLanguage(BuildContext context,String lng)
async {
  String data = await DefaultAssetBundle.of(context).loadString("assets/translations/"+lng+".json");
  LanguageData = jsonDecode(data);
}

问题是我的应用程序必须等到 LanguageData 加载。但我不能在加载应用程序之前使用 LoadLanguage 函数,因为 ma​​in() 函数中没有上下文. 如何在 ma​​in() 中使用 LoadLanguage

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    我可以建议另一种方法。在didChangeDependencies () 方法或initState() 中调用LoadLanguage()。这两个都在build() 之前执行,因此您可以在其中加载应用程序的其他部分所需的任何内容,以便当build() 执行时,您的数据就存在了。

    【讨论】:

    • 无法在 initState 中运行异步函数。它会在有状态屏幕中引发错误。
    • 是的,这是真的。使用 didChangeDependencies()。
    猜你喜欢
    • 1970-01-01
    • 2021-04-08
    • 2016-06-14
    • 1970-01-01
    • 2021-07-23
    • 2016-09-27
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多