通过参考几个网站,我们实现了一项功能,当你在智能手机上的Flutter 网页视图中按下后退按钮时,就会切换到上一页. 然而,当我按下模拟器上的后退按钮时,应用程序关闭,而不转到上一页.如何修改PopSocpe部分中的代码?

密码在这里.

import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';

final uri = Uri.parse('https://google.com');

class HomeScreen extends StatelessWidget {
  WebViewController controller = WebViewController()
    ..setJavaScriptMode(JavaScriptMode.unrestricted)
    ..setNavigationDelegate(NavigationDelegate(
      onPageFinished: (String url){
        print(url);
      }
    ))
    ..loadRequest(uri);

  HomeScreen({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
   return PopScope(
      canPop: true,
      onPopInvoked : (didPop) async {
          if(await controller.canGoBack()){
            controller.goBack();
          }
        },
    child : Scaffold(
      appBar: AppBar(
        backgroundColor: Colors.orange,
        title: Text('Code Factory'),
        centerTitle: true,
        actions: [
          IconButton(
            onPressed: () {
              controller.loadRequest(uri);
            },

            icon: Icon(
              Icons.home,
            ),
          ),
        ],
      ),
      body: WebViewWidget(
        controller: controller,
        // initialUrl: 'https://google.com',
        // javascriptMode: JavascriptMode.unrestricted,
        // onWebViewCreated: (WebViewController controller) {
        //   this.controller = controller;
        // },
      ),
    ),
    );
  }
}

推荐答案

有一种方法可以用来创建一个按钮,用于在Flutter 的网页视图中导航到上一页:

_webViewController.goBack()

以下是如何使用的示例:

 @override


Widget build(BuildContext context) {
return Scaffold(
  // ... other scaffold widgets
  floatingActionButton: FloatingActionButton(
    child: Icon(Icons.arrow_back),
    onPressed: () => _webViewController?.goBack(), // Use null-safe operator
  ),
  body: WebView(
    // ... same as before
  ),
);}

Flutter相关问答推荐

类型int不是可迭代动态tmdbapi类型的子类型<>

Flutter 中不存在URI的目标

想更新ListView上的索引点击块Flutter

无法将Flutter 连接到Firebase

从底部开始固定,然后使其可拖曳Flutter

为什么我的PIN字段在第一次打字时不显示数字?

有没有一种正确的方法可以通过上下滑动在两个小部件(在我的情况下是应用程序栏)之间切换?

将侧边菜单和底部导航栏放在同一Flutter 应用程序中

任务';:app:check DebugDuplicateClasss';的Ffltter Share_plus抛出执行失败

在Flutter 中创建自定义形状

在Dart中使用Riverpod代码生成时出现问题(addListener)

flatter_localizations错误在Null值上使用了Null判断运算符

如何手动将 FirebaseAuth 用户邮箱验证状态设置为 true

自定义类提供程序 Riverpod Flutter 中的可变变量

如何从列表中更新provider变量:Flutter列表和Provider优化指南

Flutter canvas 绘制不同 colored颜色 的原始点

Freezed+BLoc 如何从 BLoc Listener 查看当前状态和特定状态的变量

当项目较少时收缩列表视图

访问 AsyncSnapshot 中的嵌套属性

为什么 orientation == Orientation.portrait 总是正确的,尽管我的设备已经处于横向