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

Flutter双视图模糊效果问题:返回原视图后无法取消模糊

解决Flutter返回原视图后模糊效果未消失的问题

问题根源

你当前的代码中,点击Preview后先跳转页面再设置blur=true,且没有在从PDF预览页返回时重置blur状态,导致返回后模糊效果持续存在。

解决方案

利用Navigator.push返回的Future特性:当用户从第二个页面返回时,该Future会完成,此时我们可以重置blur为false。调整异步逻辑顺序即可解决:

  • 先设置blur=true显示模糊效果
  • 跳转至PDF预览页,等待用户返回
  • 用户返回后立即设置blur=false取消模糊

修改后的代码片段

onTap: () async {
  // 先开启模糊效果
  setState(() {
    blur = true;
  });
  
  // 跳转页面并等待用户返回
  await Navigator.push(
    context, 
    MaterialPageRoute(builder: (context) => Display_Image_From_Storage(
      pathSelectedImage: url,
      imageIndex: 0,
      fileName: currentFile,
    ))
  );
  
  // 用户返回后关闭模糊
  setState(() {
    blur = false;
  });
}

额外优化

在页面的leading关闭按钮中,也建议添加重置blur的逻辑,避免用户点击关闭时模糊效果残留:

leading: InkWell(
  child: const Icon(Icons.close),
  onTap: () {
    setState(() {
      blur = false;
    });
    Navigator.of(context).pop();
  }
),

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:25:45