Изменить состояние на DefaultTabController - PullRequest
0 голосов
/ 29 февраля 2020

У меня DefaultTabController с 3 вкладками, одной из которых является ListView. Мне нужно по щелчку изменить этот ListView на другой виджет. Я использую VoidCallback. Не могли бы вы помочь мне и объяснить, почему setstate не работает? Ведь когда я меняю TabBarView на детей и обновляю, например «Избранное», все работает .. Помогите мне, пожалуйста. Спасибо. Класс с вкладками:

class StationState extends State<Stations> {
  var secondWidget;

  @override

  Widget build(BuildContext context) {
secondWidget = Styles(
    onStyleTap: () => setState(() {
          secondWidget = Genres();
        }));

return DefaultTabController(
  length: 3,
  child: Scaffold(
    backgroundColor: Color(0xFF000000),
    appBar: AppBar(
      title: HeaderLogo(),
      backgroundColor: Color(0xFF000000),
      bottom: TabBar(
        indicatorColor: Colors.white,
        tabs: [
          Tab(
            text: 'Favorites',
          ),
          Tab(
            text: 'Genres',
          ),
          Tab(
            text: 'Networks',
          ),
        ],
      ),
    ),
    body: TabBarView(children: [
      Favorites(),
      secondWidget,
      Networks(),
    ]),
  ),
);
  }
}

Класс с ListView:

class StylesState extends State<Styles> {
  final VoidCallback onStyleTap;

  StylesState({this.onStyleTap});

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: EdgeInsets.only(top: 10),
      child: ListView.builder(
        itemCount: stylesList.length,
        itemBuilder: (context, position) {
          return GestureDetector(
              onTap: () => onStyleTap(),
              child: Card(
                color: Color(0xFF000000),
                child: Container(
                  height: 40,
                  child: Text(
                    stylesList[position].title,
                    style: TextStyle(color: Colors.white, fontSize: 18),
                  ),
                ),
              ));
        },
      ),
    );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...