我试着用flutter中的webview作为我的应用程序的主页,一切都加载得很好,但是点击后退按钮并不能让我回到webview中的上一个网页,它只是退出了应用程序。
import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'package:url_launcher/url_launcher.dart';
class _StudentPortalState extends State<StudentPortal>{
_launchURL(url) async {
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
Widget build (BuildContext context){
return Scaffold(
body: WebView(
javascriptMode: JavascriptMode.unrestricted,
initialUrl: 'https://sites.google.com/ttmsa.org/ttmsa/home',
navigationDelegate: (NavigationRequest request) {
if(request.url.contains("intent:")) {
_launchURL('https://forms.gle/XfNbn1Ph9xFdUaKeA');
return NavigationDecision.prevent;
}
return NavigationDecision.navigate;
},
),
);
}
}`
8条答案
按热度按时间vq8itlhq1#
使用WillPopScope包裹支架,当用户点击器械返回按钮时,执行WebView控制器返回
代码段onwillpop
退出应用程序的代码段
全码
工作演示。我点击桌面页面,然后按设备返回按钮,你可以看到信息显示“onwill goback”。并返回到上一页
gcuhipw92#
完全工作码
0aydgbwb3#
您必须控制WillPopScope组件中的逻辑:
mwngjboj4#
将
WillPopScope
包裹在Webview小工具周围,并使用canGoBack()
方法检查是否可以返回网页,如果可以,则使用Webview控制器中的goBack()
方法转到最后一个网页。mitkmikd5#
这是最好的答案(100%工作)-
这里是呼叫WillPopScope
b4wnujal6#
春红寒的答案在我改过自新后起作用了
return Future.value(true);
在_exitApp()的if块中执行
return Future.value(false);
如果为true,webview将返回到上一个站点,之后“默认设备返回按钮处理程序”(我不知道它的确切名称)关闭了应用程序。但如果为false,则应用程序在goBack站点打开后不会关闭。
我把这个作为额外的答案贴出来是因为我的名声太低了,不能对答案发表评论。但是我花了几个小时才找到这个答案,希望这个信息对别人和对我一样有帮助。
hgqdbh6s7#
反压Web视图的代码
处理后退按钮的未来
将弹出范围小工具
vd2z7a6w8#
我找到了一个非常酷的方法,以一种简单实用的方式前进和后退。
这将由appbar完成。