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

Flutter WebView 4.4.2返回上一页功能失效问题求助

问题解决:Flutter WebView 返回键直接关闭应用而非返回上一页

问题原因

当前代码未拦截系统返回键事件,WebView自身的页面栈未被优先处理,导致按下返回键时直接触发应用退出逻辑。

解决步骤

修改代码,使用WillPopScope包裹Scaffold,拦截返回键事件并判断WebView是否可以返回上一页:

修改后的完整代码

class Homepage extends StatefulWidget {
  const Homepage({super.key});

  @override
  State<Homepage> createState() => _HomepageState();
}

class _HomepageState extends State<Homepage> {
  final _controller = WebViewController()
    ..loadRequest(Uri.parse(websiteURL));

  @override
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () async {
        // 检查WebView是否存在可返回的历史页面
        if (await _controller.canGoBack()) {
          _controller.goBack();
          return false; // 阻止应用退出
        }
        return true; // 允许应用正常退出
      },
      child: Scaffold(
        appBar: AppBar(title: const Text(appTitle)),
        body: WebViewWidget(controller: _controller),
      ),
    );
  }
}

代码说明

  • WillPopScope用于拦截Android系统返回键和iOS导航栏返回操作
  • onWillPop回调中,通过_controller.canGoBack()判断WebView是否存在历史页面栈
  • 若存在可返回页面,调用_controller.goBack()回到上一页,并返回false阻止应用退出
  • 若没有历史页面,返回true允许应用正常退出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 11:33:13