[英]How to handle flutter bottom navigation bar when back button is pressed to go to the previous route?
[英]How to handle *CUSTOM* back button on Flutter with *BOTTOM NAVIGATION BAR*?
我在 flutter 有一个底部导航栏:
class _HomeState extends State<Home> {
int index = 1;
@override
Widget build(BuildContext context) {
return Scaffold(
bottomNavigationBar: CurvedNavigationBar(
index: index,
items: barItems,
onTap: (index) {
setState(() {
this.index = index;
});
...
...
);
}
}
其中 barItems 是小部件列表。
导航栏的一个屏幕正在路由到另一个屏幕,想要为前一个屏幕制作自定义后退按钮:
GridView.count(
shrinkWrap: true,
crossAxisCount: 2,
mainAxisSpacing: 10,
crossAxisSpacing: 10,
padding: const EdgeInsets.all(5),
children: _allSongs.map((currentSong) {
return InkWell(
onTap: ()=> Navigator.pushReplacementNamed(context, '/singleSong', arguments: currentSong),
...
...)
在那个新屏幕上,我有一个自定义后退按钮:
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
margin: const EdgeInsets.only(left: 10),
child: IconButton(
onPressed: () {
**Navigator.of(context).pop();**
},
icon: const Icon(Icons.arrow_back_ios))),
我也添加了所有必要的路线,但是当单击该按钮时,我得到的只是一个空白的黑屏。
有什么帮助吗? 谢谢
在新页面中,您正在使用Navigator.pushReplacementNamed(context, '/singleSong', arguments: currentSong)
到 go 到新页面。 同时,它还将主路由(“/”)替换为新路由(“/singleSong”)。
如果您尝试从那里返回 go,由于您已将“/singleSong”作为主要路线,因此不会有任何路线可供您使用。
所以,而不是
Navigator.pushReplacementNamed(context, '/singleSong', arguments: currentSong)
你应该使用
Navigator.pushNamed(context, '/singleSong', arguments: currentSong)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.