Как переключить BottomNavigationBar при нажатии кнопки из другого виджета полного состояния? - PullRequest
0 голосов
/ 10 июля 2019

Я использую BottomNavigationBar в целом мое приложение для перехода с одной вкладки на другую. Я буду использовать другой statefullwidget. Но я могу перемещаться автоматически, вызывая setState. Есть какой-либо способ сделать это. Ниже я приложил код такой же. Пожалуйста, дайте мне предложение

Предыдущее я сделал приложение без навигации. После этого мне нужно добавить навигацию в существующее приложение. Но сталкиваюсь с этим вопросом. Для ясного понимания моего вопроса ниже приведен пример кода

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: "MyHomePage",
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

int currentselected = 0;

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    List<Widget> _widgetOptions = <Widget>[
      Tabswitch(),
      Center(
        child: Container(
          child: RaisedButton(
            onPressed: () {
              setState(() {
                currentselected = currentselected == 0 ? 1 : 0;
              });
            },
            child: Text('Back'),
          ),
        ),
      ),
    ];
    return Scaffold(
      appBar: AppBar(
        title: Text('Test'),
      ),
      body: Center(
        child: _widgetOptions.elementAt(currentselected),
      ),
      bottomNavigationBar: BottomNavigationBar(
        items: [
          BottomNavigationBarItem(
              icon: Icon(Icons.ac_unit), title: Text('Name')),
          BottomNavigationBarItem(
              icon: Icon(Icons.access_time), title: Text('Name2')),
        ],
        currentIndex: currentselected,
        onTap: (index) {
          setState(() {
            currentselected = currentselected == 0 ? 1 : 0;
          });
        },
      ),
    );
  }
}

class Tabswitch extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return TabswitchState();
  }
}

class TabswitchState extends State<Tabswitch> {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Center(
      child: Container(
        child: RaisedButton(
          onPressed: () {
            setState(() {
              currentselected = currentselected == 0 ? 1 : 0;
            });
          },
          child: Text('Next'),
        ),
      ),
    );
  }
}

когда задано значение SetState, текущее выбранное значение обновляется, но оно не переходит на текущую выбранную вкладку автоматически.

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