【发布时间】:2019-11-28 12:03:04
【问题描述】:
我正在尝试使用本地化,以便可以在我自己的 Flutter 插件中使用它。为此,我使用了一个名为CoreLocalisation 的抽象基类,它由我的具体AppLocalisation 类实现。然后我正在使用
List<SingleChildCloneableWidget> uiConsumableProviders = <SingleChildCloneableWidget>[
...
Provider<CoreLocalisation>(
create: (context) => AppLocalisation.of(context)
)
];
我从ContentPage 拨打MultiProvider:
@override Widget build(BuildContext context) {
//final localisation = AppLocalisation.of(context);
return MultiProvider(
providers: uiConsumableProviders,
child: ...
);
}
让我感到困惑的是,注释掉的对 AppLocalisation.of(context) 的调用运行良好,但在 MultiProvider 中的调用会引发以下异常:
FlutterError (inheritFromWidgetOfExactType(_LocalizationsScope) 或 inheritFromElement() 被调用 在 BuilderStateDelegate.initDelegate() 完成之前。
据我了解,子上下文应该可以访问父上下文可用的所有元素。我错过了一些基本的东西吗?
【问题讨论】:
-
错误并不是说树中没有这样的元素。相反,它是说你在错误的时间调用它。