繁体   English   中英

如何使用 *BOTTOM NAVIGATION BAR* 处理 Flutter 上的 *CUSTOM* 后退按钮?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM