使用底部导航时删除应用栏的后退按钮 - 颤振
remove back button of app bar when using bottom navigation - flutter
我在我的应用程序中使用底部导航,如下所示。
class AppMainPage extends StatefulWidget {
@override
_AppMainPageState createState() => _AppMainPageState();
}
class _AppMainPageState extends State<AppMainPage> {
int _selectedIndex = 1;
void _onItemTapped(int index) {
setState(() {
_selectedIndex = index;
});
}
@override
void initState() {
super.initState();
}
@override
void dispose() {
super.dispose();
}
static List<Widget> _widgetOptions = <Widget>[
PaymentPage(),
HomePage(),
ProfilePage()
];
@override
Widget build(BuildContext context) {
return Scaffold(
bottomNavigationBar: BottomNavigationBar(
items: const <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(CupertinoIcons.money_dollar),
label: 'Payment',
),
BottomNavigationBarItem(
icon: Icon(CupertinoIcons.home),
label: 'Home',
),
BottomNavigationBarItem(
icon: Icon(Icons.person),
label: 'Profile',
),
],
currentIndex: _selectedIndex,
selectedItemColor: orange_red1,
unselectedItemColor: Colors.grey,
onTap: _onItemTapped,
),
body: _widgetOptions.elementAt(_selectedIndex),
);
}
}
我想从底部导航进入的每个页面都有一个 不同的(一些应用栏有不同的图标,titles.therefore 不能使用通用的AppMainPage 中的应用栏)AppBar 在 Scaffold 小部件中,如下所示。
主页应用栏代码
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
backgroundColor: orange_red1,
title: Text('Home'),
elevation: 0,
),
body: Stack(...))
}
}
但是我在应用栏中的每个页面都有一个后退按钮,当我点击它时出现白屏(屏幕弹出)。如何删除这个后退按钮并解决问题?
我不确定我的代码实现是否正确 requirement.I 如果有人可以提供帮助,我很高兴。
**Updated**
Note: As I read a line about `WillPopScope` wont work in iOS.
return WillPopScope(
onWillPop: () async {
//todo
return Future.value(false);
},
child: Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
backgroundColor: orange_red1,
title: Text('Home'),
elevation: 0,
leading: SizedBox(),//any one below or SizeBox()
automaticallyImplyLeading: false,//any one below or SizeBox()
),
body: Stack(...))
);
}
将automaticallyImplyLeading
设置为false
:
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
backgroundColor: orange_red1,
title: Text('Home'),
elevation: 0,
automaticallyImplyLeading: false,
),
body: Stack(...))
}
我在我的应用程序中使用底部导航,如下所示。
class AppMainPage extends StatefulWidget {
@override
_AppMainPageState createState() => _AppMainPageState();
}
class _AppMainPageState extends State<AppMainPage> {
int _selectedIndex = 1;
void _onItemTapped(int index) {
setState(() {
_selectedIndex = index;
});
}
@override
void initState() {
super.initState();
}
@override
void dispose() {
super.dispose();
}
static List<Widget> _widgetOptions = <Widget>[
PaymentPage(),
HomePage(),
ProfilePage()
];
@override
Widget build(BuildContext context) {
return Scaffold(
bottomNavigationBar: BottomNavigationBar(
items: const <BottomNavigationBarItem>[
BottomNavigationBarItem(
icon: Icon(CupertinoIcons.money_dollar),
label: 'Payment',
),
BottomNavigationBarItem(
icon: Icon(CupertinoIcons.home),
label: 'Home',
),
BottomNavigationBarItem(
icon: Icon(Icons.person),
label: 'Profile',
),
],
currentIndex: _selectedIndex,
selectedItemColor: orange_red1,
unselectedItemColor: Colors.grey,
onTap: _onItemTapped,
),
body: _widgetOptions.elementAt(_selectedIndex),
);
}
}
我想从底部导航进入的每个页面都有一个 不同的(一些应用栏有不同的图标,titles.therefore 不能使用通用的AppMainPage 中的应用栏)AppBar 在 Scaffold 小部件中,如下所示。
主页应用栏代码
class HomePage extends StatefulWidget {
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
backgroundColor: orange_red1,
title: Text('Home'),
elevation: 0,
),
body: Stack(...))
}
}
但是我在应用栏中的每个页面都有一个后退按钮,当我点击它时出现白屏(屏幕弹出)。如何删除这个后退按钮并解决问题?
我不确定我的代码实现是否正确 requirement.I 如果有人可以提供帮助,我很高兴。
**Updated**
Note: As I read a line about `WillPopScope` wont work in iOS.
return WillPopScope(
onWillPop: () async {
//todo
return Future.value(false);
},
child: Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
backgroundColor: orange_red1,
title: Text('Home'),
elevation: 0,
leading: SizedBox(),//any one below or SizeBox()
automaticallyImplyLeading: false,//any one below or SizeBox()
),
body: Stack(...))
);
}
将automaticallyImplyLeading
设置为false
:
class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
backgroundColor: orange_red1,
title: Text('Home'),
elevation: 0,
automaticallyImplyLeading: false,
),
body: Stack(...))
}