如何本地化 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?

如果我们在 GetX 上使用 bottomNavigationBar,如何使用内部导航

如何从名为 Next 的“bottomNavigationBar”按钮滑动到下一个选项卡?