二级页面的返回按钮

Flutter 版本:2.5.1
二级页面的返回按钮,是空的,只能左滑返回。

自定义一个返回按钮:

  @overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: const Text("文本示例"),// 返回按钮leading: BackButton(onPressed: () {Navigator.pop(context);})),body: const TextBody(),),);}

如果页面很多,每个页面都需要自定义,代码也都是重复的。
既然都需要,那就可以抽取出来,封装一下。

在自定义的 Widget 中,返回一个

  @overrideWidget build(BuildContext context) {return BackButton(onPressed: () {Navigator.pop(context);});}

当点击 返回 时,结果界面 全黑 了,一脸问号❓❓❓


疑问

Navigator.pop(context); 放在具体界面时,上下文 context 与封装的上下文 context 不是同一个。

  • 1.自定义按钮时,打调试断点,查看 context
  @overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(appBar: AppBar(title: const Text("文本示例"),// 返回按钮leading: BackButton(onPressed: () {Navigator.pop(context); // 在这行打了个调试断点,查看 context})),body: const TextBody(),),);}

  • 2.封装返回按钮时,打调试断点,查看 context
  @overrideWidget build(BuildContext context) {return BackButton(onPressed: () {Navigator.pop(context); // 在这行打了个调试断点,查看 context});}


对比发现
外部的 context 树结构中存在 MaterialApp
内部的 context 树结构中 存在 MaterialApp

  • 3.封装返回按钮时,把外部的 context 传入,在内部使用
import 'package:flutter/material.dart';class JHBackButton extends StatelessWidget {const JHBackButton({Key? key, required BuildContext context}): _scontext = context,super(key: key);final BuildContext _scontext;@overrideWidget build(BuildContext context) {return BackButton(onPressed: () {Navigator.pop(_scontext); // 在这行打了个调试断点,查看 context});}
}

再次打断点调试,查看 context

这会跟第一张图上的就匹配
搞定!


小编辑器

一个字:小巧


Flutter 导航返回按钮相关推荐

  1. flutter 隐藏返回按钮 自定义返回按钮

    自定义返回按钮 //改变颜色 Widget build(BuildContext context) {return Scaffold(appBar: AppBar(leading: BackButto ...

  2. flutter 一行代码取消 返回按钮

    flutter 取消 返回按钮 @overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(automati ...

  3. Swift中隐藏某一页面的返回按钮

    最近在尝试用swift去编写一个小项目,由于用惯了oc,一时间无法适应.最基本的隐藏导航返回按钮都无法实现,在网上搜索半天,没有找到合适的方法,可能是我词不达意吧.最后终于在一篇文章中找到了解决方案. ...

  4. 隐藏导航栏或返回按钮

    1 - (void)viewWillAppear:(BOOL)animated 2 { 3 [super viewWillAppear:animated]; 4 [self.navigationCon ...

  5. IOS设置导航栏返回按钮,并添加事件返回主页面

    IOS设置导航栏返回按钮,并添加事件返回主页面 前提是已经push了一个viewController了.才能使用. XXXTableViewController 里面书写 - (void)viewDi ...

  6. Swift - 重写导航栏返回按钮

    // 重写导航栏返回按钮方法 func configBackBtn() -> Void { // 返回按钮 let backButton = UIButton(type: .custom) // ...

  7. IOS 自定义导航栏标题和返回按钮标题

    IOS中自定义导航栏标题: UILabel *titleText = [[UILabel alloc] initWithFrame: CGRectMake(160, 0, 120, 50)]; tit ...

  8. 自定义iOS7导航栏背景,标题和返回按钮文字颜色

    在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏的背景和文字Col ...

  9. iOS10 的适配问题,你遇到了吗?导航栏标题和返回按钮神奇的消失了

    苹果系统升级后好多应用都发了新版本来适配,今天就来分享一下我的适配历程. 首先是出现的问题: 1.push一个控制器,返回按钮和标题神奇的消失了,打开三维视图(比较坑的是有的版本老到打不开三维视图 ) ...

最新文章

  1. 南大新规:博士生在公众号发文且阅读量超1万即可参评国奖!
  2. CSS继承选择器与包含选择器的比较
  3. ctab法提取dna流程图_【分子】DNA的提取与检测(下)——质粒DNA
  4. ASP.Net/C# - PayPal接口文档
  5. Numpy Math functions
  6. 使用Entity Framework和Web API的ASP.NET Core Blazor CRUD
  7. 西工大学计算机专业考研容易吗,2022年西北工业大学计算机专业考研成功经验...
  8. multsim仿真1:利用multisim化简逻辑函数
  9. 数据挖掘概念与技术_第三版_课后习题
  10. diskgenius创建efi分区_无损分区大小调整
  11. SENTAURUS_2018_06
  12. 图像检索代码python_python-图像检索
  13. 2018 AI产业界大盘点
  14. 微信公众账号开发教程(三) 实例入门:机器人(附源码) ——转自http://www.cnblogs.com/yank/p/3409308.html...
  15. 去除水晶报表小数点最后多余的0
  16. 本人搜集的不用fq的免费学术技术资源网站
  17. 豪江智能更新招股书:2021年净利润、毛利率双降,表现不及同行
  18. 360度全景拼接之成像模型与柱面投影
  19. 链接挖掘算法之PageRank算法和HITS算法
  20. 从一个URL到页面渲染完成发生了什么?

热门文章

  1. 懂车帝推出朋友圈功能,你怎么看?
  2. 用Python写爬虫有哪些好处?
  3. 一加6android p降级包,国内最快!一加6更新Android P稳定版,官方确认一加6T会预装...
  4. Coap协议RFC7252英文版地址 + 常见工业通信协议集合
  5. 批处理中使用变量嵌套/命令嵌套实现随机密码
  6. 数据结构 线性 非线性_线性和非线性数据结构之间的区别
  7. sklearn中Logistics Regression的coef_和intercept_的具体意义
  8. UbuntuKylin常用快捷键
  9. 解决不显示menu图标问题
  10. linux中启动tomcat后浏览器无法访问的解决方法之防火墙关闭