在initState

时间:2019-02-25 10:26:22

标签: dart flutter flutter-layout

发现了Flutter处理l10n和void initState()的问题。

l10n本身运行良好。做这份工作,但是我发现了我认为应该标记的特定场景。 通过显示example,我将更具体。 以下代码摘自gallery app

...
  @override
  void initState() {
    super.initState();
    _navigationViews = <NavigationIconView>[
      NavigationIconView(
        icon: const Icon(Icons.access_alarm),
        title: 'Alarm',
        color: Colors.deepPurple,
        vsync: this,
      ),
      NavigationIconView(
        activeIcon: CustomIcon(),
        icon: CustomInactiveIcon(),
        title: 'Box',
        color: Colors.deepOrange,
        vsync: this,
      ),
      NavigationIconView(
        activeIcon: const Icon(Icons.cloud),
        icon: const Icon(Icons.cloud_queue),
        title: 'Cloud',
        color: Colors.teal,
        vsync: this,
      ),
      NavigationIconView(
        activeIcon: const Icon(Icons.favorite),
        icon: const Icon(Icons.favorite_border),
        title: 'Favorites',
        color: Colors.indigo,
        vsync: this,
      ),
      NavigationIconView(
        icon: const Icon(Icons.event_available),
        title: 'Event',
        color: Colors.pink,
        vsync: this,
      )
    ];

    _navigationViews[_currentIndex].controller.value = 1.0;
  }
...

我正在initState函数中使用本地化。 您可以(有点)通过使用用户的语言代码来绕过此问题,并手动翻译它而不是使用locales.dart文件,同样,我认为这是一个持续存在的问题,应该解决。

注意:在撰写本文时,我曾想过一个想法,可以通过调用前一类中的l10n字符串来绕过这个问题-测试这一理论。

1 个答案:

答案 0 :(得分:0)

所以我最终“传递”了上一堂课的价值观。可以通过使用ether InheritedWidget或“传递值”来解决此“问题”。