繁体   English   中英

Flutter (webview_flutter) 滑动返回 Pop Webview

[英]Flutter (webview_flutter) Swipe Back to Pop Webview

我将以下代码用于 Flutter Webview(webview_flutter 包)。

单击返回按钮时,_goBack() 设置是否将 go 返回上一页,或者如果没有上一页,则弹出 webview。

然后我启用了gestureNavigationEnabled:true 以允许用户滑回之前的页面。 效果很好。 但是,当没有以前的页面时,刷卡不会弹出 webview。

有没有办法让向后滑动与返回按钮相同的行为?

  1. 如果上一页存在,则滑动到上一页
  2. 如果没有上一页,滑动关闭 webview

谢谢你。

import 'package:webview_flutter/webview_flutter.dart';

     body: WillPopScope(
      onWillPop: () => _goBack(context),
      child: WebView(  
        initialUrl: widget.url,
        gestureNavigationEnabled: true,
        onWebViewCreated: (WebViewController webViewController) {
          _controllerCompleter.future.then((value) => _controller = value);
          _controllerCompleter.complete(webViewController);
      ),
    ),

      Future<bool> _goBack(BuildContext context) async {
        if (await _controller.canGoBack()) {
          _controller.goBack();
          return Future.value(false);
        } else {
          Navigator.of(context).pop();
          return Future.value(true);
        }
      }

问题是“上下文”,当它发现没有上下文时它没有关闭 webview window.so 在这种情况下你需要做的是:

看这里: https://github.com/brianegan/flutter_redux/issues/5#issuecomment-361215074

You can set a global key for your navigation:

    final GlobalKey<NavigatorState> navigatorKey = new GlobalKey<NavigatorState>();

Pass it to MaterialApp:

    new MaterialApp(
          title: 'MyApp',
          onGenerateRoute: generateRoute,
          navigatorKey: navigatorKey,
        );

Push routes:

    navigatorKey.currentState.pushNamed('/someRoute');

您需要为导航创建一个全局键,然后它才能工作。 它将关闭 window 而不获取上下文(意味着如果上一页不存在,那么它也可以弹出 window )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM