Я использую TabController длины 2. Я хочу использовать один и тот же экран для обеих вкладок, и на основе текущей активной вкладки я хочу показать выполнение различных операций. Но когда я печатаю индекс на обоих экранах вкладок, я получаю тот же индекс. Зачем? Вот мой контроллер вкладок:
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
elevation: 0,
bottom: PreferredSize(
preferredSize: Size.fromHeight(32),
child: Container(
decoration: BoxDecoration(
color: Color(0xFF111328),
borderRadius: BorderRadius.circular(5),
),
child: SafeArea(
child: Column(
children: <Widget>[
TabBar(
controller: _tabController,
indicator: UnderlineTabIndicator(
borderSide: BorderSide(color: Colors.white, width: 3),
insets: EdgeInsets.fromLTRB(56, 0, 56, 8),
),
labelColor: kLabelColor,
labelStyle: kLabelStyle,
unselectedLabelColor: kUnselectedLabelColor,
indicatorWeight: kIndicatorWeight,
tabs: [
TabView(
text: "Home",
iconData: Icons.home,
),
TabView(
text: 'Favourites',
iconData: Icons.favorite,
),
],
),
],
),
),
),
),
),
body: TabBarView(
children: <Widget>[
MyTab(tabIndex: _tabController.length),
MyTab(tabIndex: _tabController.index)
],
controller: _tabController,
),
);
}
Вот экран просмотра MyTab, который я использую как TabBarView в приведенном выше коде
class MyTab extends StatefulWidget {
MyTab({this.tabIndex});
final int tabIndex;
@override
_MyTabState createState() => _MyTabState();
}
class _MyTabState extends State<MyTab> {
_initImages() async {
print(widget.tabIndex); // Always print 0
AssetsImages assetsImages = AssetsImages(context: context);
List imagePaths = await assetsImages.initImagesList();
setState(() {
imagesList = imagePaths;
});
}
void initState() {
super.initState();
_initImages();
}
}