首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Webview添加到HomeScreen

将Webview添加到HomeScreen
EN

Stack Overflow用户
提问于 2021-07-29 21:32:13
回答 2查看 99关注 0票数 0

我要在web视图中打开一个web URL。如何在webview中添加Adding it to the HomeScreen的功能?

我正在使用InAppWebview启动一个webview。使用ChromeSafariBrowser组件,它提供了默认选项Adding to HomeScreen。如何为webview构建类似的功能?

对于外行来说,我正在研究这个功能。

EN

回答 2

Stack Overflow用户

发布于 2021-08-04 16:28:04

有一个javascript函数,您可以调用它来询问用户是否要将当前网页添加到他的主页。https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Add_to_home_screen

在他们的文档中:https://pub.dev/documentation/flutter_inappwebview/latest/flutter_inappwebview/JavaScriptReplyProxy-class.html

票数 1
EN

Stack Overflow用户

发布于 2021-08-03 02:37:56

我认为您正在尝试询问如何将webview添加到您的应用程序的主屏幕。您没有分享您的主屏幕代码,但我相信可以肯定地说,flutter中的一切都是一个小部件,而且您目前也在使用InAppWebView小部件。

他们的documentation显示了一个示例,其中用户可以输入url,webview控制器将加载该url

加载代码:

代码语言:javascript
复制
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));
                  },

用于web视图显示的代码:

代码语言:javascript
复制
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);
                        },
                      ),

Recommendation:通读文档。大多数代码都不需要编辑。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68583000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档