У меня 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),
),
),
));
},
),
);
}
}