如何本地化 BottomNavigationBarItem 标签
Posted
技术标签:
【中文标题】如何本地化 BottomNavigationBarItem 标签【英文标题】:how to localize BottomNavigationBarItem labels 【发布时间】:2021-02-17 13:20:42 【问题描述】:是否有任何解决方法可以将 BottomNavigationBarItem 翻译成不同的语言? 我使用 Lang.getString(context, key) 访问地图(从 json 文件加载)以获取正确的翻译,像这样对标签进行硬编码没有任何意义,标签:“Home”。我该怎么办?
PageView(
controller: pageController,
onPageChanged: _pageSwipped,
children: <Widget>[Page1()],
),
bottomNavigationBar: BottomNavigationBar(
items: const <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(Icons.list),
label: Lang.getString(context, key), // it doesn't work because it should be constant.
),
],
currentIndex: _currenIndex,
selectedItemColor: Colors.blue,
iconSize: _deviceSize.size.height * 0.046,
selectedFontSize: _deviceSize.size.height * 0.023,
unselectedItemColor: Colors.grey,
onTap: _bottomTapped,
)
【问题讨论】:
【参考方案1】:从行中删除 const 关键字
items: const <BottomNavigationBarItem>[
......
......
]
【讨论】:
这似乎解决了错误。这背后有什么解释吗? 我可以简单解释一下,const关键字的意思是dart编译器只执行一次代码,这对提高应用程序的性能很有好处,尤其是当它是一大段代码的时候。但是如果有一个表达式可以在运行时改变,代码就不能设置为 const。 const 对象通常存储在 Stack 中,普通对象存储在 Heap...以上是关于如何本地化 BottomNavigationBarItem 标签的主要内容,如果未能解决你的问题,请参考以下文章
如何在 BLOC 的 Flutter 中的 BottomNavigationBar 中设置 currentIndex?
如何在BLOC的Flutter中设置BottomNavigationBar中的currentIndex?
如何在颤动的BottomNavigationBar中使用命名路由?
如何路由到页面,而不在颤动中删除 BottomNavigationBar?