发现了一个有关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字符串来绕过这个问题--测试这个理论。
发布于 2019-02-25 19:18:57
因此,我最终“传递”了前一个类的值。这个“问题”可以通过使用以太InheritedWidget或“传递值”来解决。
https://stackoverflow.com/questions/54864076
复制相似问题