我必须在我的flutter应用程序的主要runApp之前加载json内容。我有一个Future函数(LoadLanguage))加载json文件在一个变量(LanguageData)),所以我可以在我的应用程序中使用上述变量的值:
Future<void> LoadLanguage(BuildContext context,String lng)
async {
String data = await DefaultAssetBundle.of(context).loadString("assets/translations/"+lng+".json");
LanguageData = jsonDecode(data);
}
问题是我的应用程序必须等待LanguageData被加载。但是我不能在加载应用程序之前使用LoadLanguage函数,因为在main()中没有上下文函数。如何使用LoadLanguage在main ()
?我可以建议另一种方法。在didChangeDependencies ()
方法或initState()
方法中调用LoadLanguage()
。这两个都在build()
之前执行,因此你可以加载你的应用程序的其他部分需要的任何东西,这样当build()
执行时,你的数据就存在了。