我正在尝试从一个页面导航到另一页面并设置选项卡栏的索引。
这是我在第一页中的代码:
GestureDetector(
onTap: () { Navigator.push(
context,
MaterialPageRoute(builder: (context) => ProductPage()),
); },
child: Container(
color: Colors.blueGrey,
)),
在另一页(ProductPage)中:
class ProductPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: 3,
child: Scaffold(
appBar: AppBar(
backgroundColor: Color.fromRGBO(65,102,60,1,
),
bottom: TabBar(
isScrollable: true,
indicatorColor: Colors.white,
tabs: [
Tab(icon: Text('First')),
Tab(icon: Text('Second')),
Tab(icon: Text('Third')),
],
),
),
body: TabBarView(
children: [
FirstTab(),
SecondTab(),
ThirdTab(),
],
),
),
);
}
}
现在,它总是打开第一个选项卡,但我希望它打开SecondTab。
我已经尝试过了:
MaterialPageRoute(builder: (context) => ProductPage(SecondTab)),
但这不起作用。我该如何解决?
答案 0 :(得分:3)
您可以将索引作为参数传递,然后在defaultTabController的initialindex中使用它。
尝试这样的事情:
GestureDetector(
onTap: () { Navigator.push(context,
MaterialPageRoute(builder: (context) => ProductPage(0)));
},
child: Container(color: Colors.blueGrey)
)
在另一页(ProductPage)中:
class ProductPage extends StatelessWidget {
int selectedPage;
ProductPage(this.selectedPage);
@override
Widget build(BuildContext context) {
return DefaultTabController(
initialIndex:selectedPage,
length: 3,
child: Scaffold(
appBar: AppBar(
backgroundColor: Color.fromRGBO(65,102,60,1),
),
bottom: TabBar(
isScrollable: true,
indicatorColor: Colors.white,
tabs: [
Tab(icon: Text('First')),
Tab(icon: Text('Second')),
Tab(icon: Text('Third')),
],
),
body: TabBarView(
children: [
FirstTab(),
SecondTab(),
ThirdTab(),
],
),
),
);
}
}
现在,您只需传递0,1或2作为选定索引即可。