我正在创建一个本地化的应用程序,在主页上有一个底部导航栏。如果我更改本地化,BottomNavigationBar的项目名称不会更新,直到单击其中一个。我如何更新底部栏?我错过了什么?
代码:
@override
Widget build(BuildContext context) {
return BottomNavigationBar(
onTap: onTabTapped,
type: BottomNavigationBarType.fixed,
// new
currentIndex: _currentIndex,
selectedFontSize: 12,
unselectedFontSize: 12,
elevation: 10,
showSelectedLabels: true,
showUnselectedLabels: true,
items: [
new BottomNavigationBarItem(
icon: Icon(MyFlutterAppIOS.share_100, color: Colors.blueGrey),
title: Text(
allTranslations.text("sharetitle"),
style: TextStyle(
color: Colors.blueGrey,
),
),
),
new BottomNavigationBarItem(
icon: Icon(MyFlutterAppIOS.protect_100, color: Colors.blueGrey),
title: Text(
allTranslations.text("lblprivacypolicy"),
style: TextStyle(
color: Colors.blueGrey,
),
),
),
new BottomNavigationBarItem(
icon: Icon(MyFlutterAppIOS.protect_100, color: Colors.blueGrey),
title: Text(
allTranslations.text("lblterms"),
style: TextStyle(
color: Colors.blueGrey,
),
),
),
new BottomNavigationBarItem(
icon: Icon(MyFlutterAppIOS.info_100, color: Colors.blueGrey),
title: Text(
allTranslations.text("lblinfo"),
style: TextStyle(color: Colors.blueGrey),
),
)
],
);
}
2条答案
按热度按时间wlwcrazw1#
这是因为您不会以任何方式重新构建此小部件。一旦更改语言,您需要重新构建此小部件。您可以使用任何状态管理库(如BLOC或提供程序)在更新语言后通知此小部件的更改。因此,当您单击任何项目时,它都会重新构建,然后您就会看到更改。
您也可以在此处使用现有提供程序并通知更改。请阅读有关状态管理here的更多信息
fcg9iug32#
我在将BottomNavigationBar Package 到Localizations.override时解决了这个问题
同样重要的是,这些元素在build方法中...例如:
}