在颤动的WebView中后退按钮不起作用 [英] Back Button not working inside Webview in flutter
本文介绍了在颤动的WebView中后退按钮不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我编写的代码是通过包装willopScope来编写的,这样我就可以获取Webview的上一页,但它不起作用,因此它将关闭整个WebView页。
以下是完整的代码:
class Resources extends StatefulWidget {
@override
_ResourcesState createState() => _ResourcesState();
}
class _ResourcesState extends State<Resources> {
late WebViewController _controller;
final Completer<WebViewController> _controllerCompleter =
Completer<WebViewController>();
Future<bool> pop(BuildContext context) async {
if (await _controller.canGoBack()) {
_controller.goBack();
return Future.value(false);
} else {
return Future.value(true);
}
}
@override
void initState() {
super.initState();
if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: SafeArea(
child: WillPopScope(
onWillPop:()=> pop(context),
child: Scaffold(
appBar: AppBar(),
body: WebView(
gestureNavigationEnabled: true,
initialUrl: 'https://www.edhitch.com/login.html',
javascriptMode: JavascriptMode.unrestricted,
onWebViewCreated: (WebViewController webViewController) {
_controllerCompleter.future.then((value) => _controller = value);
_controllerCompleter.complete(webViewController);
},
),
),
),
),
);
}
}
我已经使用了Will Scope,它接受bool函数POP,请帮助我解决它。
推荐答案
尝试以下代码,希望对您有帮助:
使用异步创建Future函数,它将返回True
Future<bool> onWillPopFunction() async {
return true;
}
并在onWillPop事件上调用onWillPopFunction,函数
WillPopScope(
child: Scaffold(),
onWillPop: onWillPopFunction,
)
您还添加了警告提示框,如(是否退出应用程序?)
或尝试以下代码
IconButton(
icon: Icon(Icons.arrow_back),
onPressed: () => Navigator.pop(context, false),
),
这篇关于在颤动的WebView中后退按钮不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文