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

如何使用OffStage组件实现FlutterMap状态保持,避免页面返回时重载

核心修改逻辑

Offstage组件的控制属性offstage的逻辑和Visibility的visible完全相反:

  • offstage: true:组件隐藏,不会在页面绘制,但会保留在组件树中,状态全程维持
  • offstage: false:组件正常展示

你不需要改动现有业务逻辑,只需要替换主页面中Visibility部分的代码即可,其余逻辑(包括第二页的回调、跳转逻辑)都可以保持不变。


具体代码修改

  1. 主页面_MainScreenState的build方法中,将原来的Visibility组件替换为如下代码:
Scaffold(
  body: Container(
    // 原有margin配置保持不变
    margin: EdgeInsets.fromLTRB(0, 0, 0, 300),
    child: Offstage(
      // 逻辑取反即可适配原有isVisible字段
      offstage: !isVisible,
      child: FlutterMap(),
    ),
  ),
  // 其余Scaffold配置、GestureDetector跳转逻辑完全保留不用修改
)

补充说明

Offstage天生自带子组件状态保留能力,不需要像Visibility一样额外配置maintainState、maintainAnimation等参数,只要isVisible的赋值逻辑正确,地图在隐藏、重新显示的过程中不会触发重载,之前的缩放、位置等状态都会完全保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 05:45:01