flutter开发, 当StatefulWidget的子widget的类相同时,页面无法切换的问题

先上代码

main.dart文件
在这里插入图片描述

然后就是往main.dart文件的 body填充的widget
fragment_page.dart
在这里插入图片描述

就两个文件,文字描述难知其意,见如下图,Demo有两个页面,一个是main.dart,它的body能够根据下方的按钮选择填充的布局。
当点击消息,则body会加载消息界面,点击联系人则加载联系人界面,非常简单。

由于在代码中,我们把填充的布局放在了一个数组中,并且三个的布局是相同的
请添加图片描述

我们首先在消息界面点击16下,

然后我们再点击联系人!!!
理论上,由于点击了bottomNavigationBar,那么就会触发onTap方法,把index值传入到 nowIndex中
自然在再次调用build方法渲染时,就会加载数组
fragmentPagers[ 0或者1或者2]对应相应的视图。

所以这时候点击联系人,就会切换到联系人的布局,虽然布局是相同的,但中间的数字就会变成0,因为这时候加载的是新布局。
但事实上是这个结果,,,,

问题结果表现

显然,main.dart文件中,MyHomePager的body并没有加载新的布局,而是依然使用的是消息布局。!!

debug断点测试结果

  1. 点击事件触发了,index也改变了,同时fragmentPages[0]、fragmentPages[1], fragementPages[2]的hashcode完全不同。
  2. 如果数组中的对象,不是来自同一类的实例的话,就不会出现这种问题。结果如下:
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值