我在 webview 中打开一个 web URL。如何添加Adding it to the HomeScreen到 webview 的功能?
我正在使用InAppWebview来启动 webview。使用ChromeSafariBrowser组件,它提供了一个默认选项Adding to HomeScreen. 如何为 webview 构建类似的功能?
对于没有经验的人,我正在研究这个功能。
我在 webview 中打开一个 web URL。如何添加Adding it to the HomeScreen到 webview 的功能?
我正在使用InAppWebview来启动 webview。使用ChromeSafariBrowser组件,它提供了一个默认选项Adding to HomeScreen. 如何为 webview 构建类似的功能?
对于没有经验的人,我正在研究这个功能。
您可以调用一个 javascript 函数来询问用户是否要将当前网页添加到他的主页。https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Add_to_home_screen。
我认为您正在尝试询问如何将 webview 添加到应用程序的主屏幕。您没有分享您的主屏幕代码,但我相信可以肯定地说,flutter 中的所有内容都是一个小部件,并且您当前也在使用 InAppWebView 小部件。
他们的文档显示了一个示例,其中用户可以输入 url 并且 webview 控制器加载该 url
加载代码:
onSubmitted: (value) {
var url = Uri.parse(value);
if (url.scheme.isEmpty) {
url = Uri.parse("https://www.google.com/search?q=" + value);
}
//The below given 2 lines are responsible for loading the url
webViewController?.loadUrl(
urlRequest: URLRequest(url: url));
},
网页视图显示代码:
InAppWebView(
key: webViewKey,
initialUrlRequest:
URLRequest(url: Uri.parse("https://inappwebview.dev/")),
initialOptions: options,
pullToRefreshController: pullToRefreshController,
onWebViewCreated: (controller) {
webViewController = controller;
},
onLoadStart: (controller, url) {
setState(() {
this.url = url.toString();
urlController.text = this.url;
});
},
androidOnPermissionRequest: (controller, origin, resources) async {
return PermissionRequestResponse(
resources: resources,
action: PermissionRequestResponseAction.GRANT);
},
shouldOverrideUrlLoading: (controller, navigationAction) async {
var uri = navigationAction.request.url!;
if (![ "http", "https", "file", "chrome",
"data", "javascript", "about"].contains(uri.scheme)) {
if (await canLaunch(url)) {
// Launch the App
await launch(
url,
);
// and cancel the request
return NavigationActionPolicy.CANCEL;
}
}
return NavigationActionPolicy.ALLOW;
},
onLoadStop: (controller, url) async {
pullToRefreshController.endRefreshing();
setState(() {
this.url = url.toString();
urlController.text = this.url;
});
},
onLoadError: (controller, url, code, message) {
pullToRefreshController.endRefreshing();
},
onProgressChanged: (controller, progress) {
if (progress == 100) {
pullToRefreshController.endRefreshing();
}
setState(() {
this.progress = progress / 100;
urlController.text = this.url;
});
},
onUpdateVisitedHistory: (controller, url, androidIsReload) {
setState(() {
this.url = url.toString();
urlController.text = this.url;
});
},
onConsoleMessage: (controller, consoleMessage) {
print(consoleMessage);
},
),
建议: 阅读文档。大多数代码不必编辑。