我需要在标签栏视图的应用栏中添加后退按钮。
当您将选项卡视图控制器推到导航堆栈上时,我无法在选项卡菜单的应用程序栏中看到后退按钮。当我从左向右滑动时,我将转到上一屏幕,但无法在应用栏中看到后退按钮
以下是我将标签栏推入导航堆栈的方式
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => TabBarScreen()),
);
class TabBarScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: DefaultTabController(
length: 3,
child: Scaffold(
appBar: AppBar(
bottom: TabBar(
tabs: [
Tab(icon: Icon(Icons.directions_car)),
Tab(icon: Icon(Icons.directions_transit)),
Tab(icon: Icon(Icons.directions_bike)),
],
),
title: Text('Tabs Demo'),
automaticallyImplyLeading: true,
),
body: TabBarView(
children: [
Icon(Icons.directions_car),
Icon(Icons.directions_transit),
Icon(Icons.directions_bike),
],
),
),
),
);
}
}
答案 0 :(得分:2)
因为您的TabBarScreen
内部有一个MaterialApp
,所以它有自己的Navigator
和自己的导航堆栈。因此,就其角度而言,它位于“第一个屏幕”上。
如果您从小部件树中删除MaterialApp
小部件,您将看到“后退”按钮。
这是我的意思:
class TabBarScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return DefaultTabController(
length: 3,
child: Scaffold(
appBar: AppBar(
bottom: TabBar(
tabs: [
Tab(icon: Icon(Icons.directions_car)),
Tab(icon: Icon(Icons.directions_transit)),
Tab(icon: Icon(Icons.directions_bike)),
],
),
title: Text('Tabs Demo'),
automaticallyImplyLeading: true,
),
body: TabBarView(
children: [
Icon(Icons.directions_car),
Icon(Icons.directions_transit),
Icon(Icons.directions_bike),
],
),
),
);
}
}
答案 1 :(得分:1)
由于您没有使用此处链接的SELECT f.name, COUNT(distinct s.letters), AVG(t.numbers)
...
,因此应该没有后退按钮,除非我误解了您的要求,否则我不明白您为什么想要一个。
https://api.flutter.dev/flutter/widgets/Navigator-class.html
Navigator
不会更改页面,只会更改显示。您只在控制tabBarView
的小部件。如果您希望有一个后退按钮,则需要在body
中将iconButton
硬编码为第二个/第三个屏幕,并使用该按钮appBar
setState
然后可以用与selectedIndex
相同的方式在主体中交换小部件。
我不是专家,但我希望这对您有所帮助或为您指明正确的方向!