Flutter:Localizations.of从StatelessWidget返回null

时间:2018-06-29 05:33:02

标签: flutter

正如标题所述,如果小部件类是从StatelessWidget扩展的,则

Localizations.of<MaterialLocalizations>(context, MaterialLocalizations);

任何想法都会返回null吗?

2 个答案:

答案 0 :(得分:2)

有同样的问题。在flutter存储库中有一个打开的github issue。对我来说唯一解决的办法就是创建一个像这样的分离部件:

@override
  Widget build(BuildContext context) {
    return MaterialApp(
        title: 'Flutter Demo',
        localizationsDelegates: [...],
        supportedLocales: ..,
        locale: ...,
        home: MyAppPage()); // separat MyAppPage instead of putting widget code with translations here
  }

// MyAppPage
class MyAppPage extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        ...
        body: Center(
            child: Text(AppTranslations.of(context).translate(...)),

如果这不能解决您的问题,我们可能需要查看更多代码:)!

答案 1 :(得分:0)

如果从函数外部调用它,则会导致问题,因为无法获得正确的上下文。

Widget build(BuildContext context) {}

您可以通过

处理
  • 如果您调用函数返回小部件,则传递上下文
  • 在Widget构建外部声明语言变量,然后在其后重置它们。
  • 将小部件编写为单独的小部件。 如果这些方法仍然不起作用。请添加您的代码的更多详细信息。

希望获得帮助。