我有一個本地化的 Android Flutter 應用程式。我按照這些說明配置了本地化。這有效(雖然感覺不必要地復雜),并且我能夠在整個應用程式中使用本地化的字串,但我無法弄清楚如何加載本地化的資產 JSON 檔案。
我試圖將資產路徑存盤為本地化字串。但是當我嘗試從 statefull 小部件加載路徑時,initState出現錯誤。
@override
void initState() {
var t = AppLocalizations.of(context);
await rootBundle.load(t!.localizedJsonPath);
super.initState();
}
FlutterError(dependOnInheritedWidgetOfExactType<_LocalizationsScope>() 或dependOnInheritedElement() 在_MyScreenState.initState() 完成之前被呼叫。
請注意,如果我對 JSON 資產檔案路徑進行硬編碼,則上述方法可以正常作業。它僅在我嘗試加載本地化字串時失敗。
我究竟做錯了什么?
如果有更好的方法來加載本地化資產,我會接受它作為答案。Flutter 檔案提到了影像解析度和主題的資產變體,但我找不到任何用于本地化的內容。
uj5u.com熱心網友回復:
您遇到的錯誤似乎與您的背景關系有關。
var t = AppLocalizations.of(context);
在 initState 中呼叫。但是,您的 init 狀態在您的小部件具有背景關系之前被呼叫,因為它還沒有構建。所以你可以嘗試做的是使用didChangeDependencies()而不是 initState,像這樣:
@override
void didChangeDependencies() {
var t = AppLocalizations.of(context);
await rootBundle.load(t!.localizedJsonPath);
super.didChangeDependencies();
}
還有一件事:init 狀態不是異步的,所以嘗試await你呼叫的方法并不真正起作用。如果您的問題仍然存在,請讓我更新!
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/342560.html
下一篇:創建流觀看串列?
