Трепетная локализация элементов BottomNavigationBar - PullRequest
0 голосов
/ 01 мая 2020

Я создаю локализованное приложение с нижней панелью навигации на главной странице. Если я меняю локализацию, имя элементов 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),
      ),
    )
  ],

 );
}

1 Ответ

0 голосов
/ 01 мая 2020

Это потому, что вы больше не создаете этот виджет. Вам нужно перестроить этот виджет снова после изменения языка. Вы можете использовать любую библиотеку управления состояниями, например BLO C или поставщика, чтобы уведомить об изменении этого виджета после обновления языка. Поэтому, когда вы щелкаете по любому элементу, он перестраивается, а затем вы видите изменения.

 ChangeNotifierProvider(
      create: (context) => AppLevelProvider(),
      child: BottomNavigationBar(),
 ),

Вы также можете использовать существующего поставщика и уведомить об изменениях. Пожалуйста, прочитайте больше о государственном управлении здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...