You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter中BottomNavigator跳转同名不同参数页面失效是否为正常现象?

问题结论

这种跳转异常是默认配置下的预期表现,并非代码运行故障。

原因说明

Flutter的Widget差分(Diff)算法判断两个Widget是否需要替换重建时,会同时校验runtimeType和key两个属性:

  • 你代码中的两个Trends实例没有传入唯一标识key,二者runtimeType完全相同,Diff算法会默认判定二者是同一个Widget,所以不会触发页面切换动作
  • Favorites、Search页面和Trends的runtimeType不一致,所以跨组件的切换可以正常生效

修复方案

给两个Trends实例分别指定不同的ValueKey即可解决跳转异常问题:

final screens = [
  Favorites(),
  Search(),
  Trends(language: 'IS', key: const ValueKey('trends_is')),
  Trends(language: 'EN', key: const ValueKey('trends_en')),
];

如果Trends组件暂不支持接收key参数,在构造方法中增加key透传即可:

class Trends extends StatelessWidget {
  final String language;
  const Trends({super.key, required this.language});

  // 其余组件实现逻辑
}

内容的提问来源于stack exchange,提问作者sigjak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 09:09:00