是否可以使用OnWillpopScope像Twitter应用程序一样,当您按回去时在不同的选项卡中,它会返回主页或tabindex获取或设置为零。
是的,可以使用 TabController 来完成。它有一个方法animateTo()
可用于 WillPopScope 小部件的onWillPop
回调。
下面是一个示例实现
class HomePage extends StatefulWidget {
@override
HomePageState createState() {
return new HomePageState();
}
}
class HomePageState extends State<HomePage>
with SingleTickerProviderStateMixin {
List<Widget> _tabs = <Widget>[
Icon(Icons.directions_car),
Icon(Icons.directions_transit),
Icon(Icons.directions_bike),
];
TabController _tabController;
initState() {
super.initState();
_tabController = TabController(length: _tabs.length, vsync: this);
}
@override
dispose(){
_tabController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () {
_tabController.animateTo(0);
},
child: Scaffold(
appBar: AppBar(
bottom: TabBar(
controller: _tabController,
tabs: [
Tab(icon: Icon(Icons.directions_car)),
Tab(icon: Icon(Icons.directions_transit)),
Tab(icon: Icon(Icons.directions_bike)),
],
),
title: Text('Tabs Demo'),
),
body: TabBarView(
controller: _tabController,
children: _tabs.toList(),
),
),
);
}
}