如何让 Chrome 支持的 webview 颤动?

     2023-02-23     43

关键词:

【中文标题】如何让 Chrome 支持的 webview 颤动?【英文标题】:how to get Chrome Powered webview in flutter? 【发布时间】:2019-04-25 23:12:03 【问题描述】:

我最近注意到,当在一些少数 Android 应用中打开链接时,它们具有类似的外观和自定义操作菜单,自定义菜单下方带有“由 Chrome 提供支持”。这里使用了什么组件,还是它仍然是 Chromium WebView?希望我希望将它们添加到我的下一个项目中,这些项目涉及在应用程序内打开链接。在 Flutter 中实现类似桌面视图。

平台:安卓 webview:带有自定义选项的 chrome 驱动的 webview 框架:颤振

领英应用

GMail 应用程序

我的颤振医生:

[√] Flutter (Channel beta, v0.11.9, on Microsoft Windows [Version 
10.0.17134.407], locale en-IN)
[√] Android toolchain - develop for Android devices (Android SDK 28.0.3)
[√] Android Studio (version 3.2)
[√] VS Code (version 1.29.1)
[√] VS Code, 64-bit edition (version 1.26.1)
[!] Connected device
! No devices available

我的 github 问题: click here

提前致谢。

【问题讨论】:

那不是webview,那叫Chrome Custom Tabs 是的,就是这样,如何让它颤动?投票给我的问题:) 【参考方案1】:

你可以使用这个包:

https://pub.dartlang.org/packages/flutter_custom_tabs

但请注意,此行为仅适用于 Android,在 iOS 上将使用 Safari webview。

【讨论】:

如果您在发布版本时遇到冻结应用问题,请查看此问题github.com/droibit/flutter_custom_tabs/issues/21【参考方案2】:

你可以试试我的插件flutter_inappbrowser(编辑:它已被重命名为flutter_inappwebview)。为此,您需要使用 ChromeSafariBrowser 类。

它在 Android 上使用 Chrome Custom Tabs,在 iOS 上使用 SFSafariViewController。

您可以使用 InAppBrowser 后备实例初始化 ChromeSafariBrowser 实例。

一个例子:

import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';

class MyInAppBrowser extends InAppBrowser 

  @override
  Future onLoadStart(String url) async 
    print("\n\nStarted $url\n\n");
  

  @override
  Future onLoadStop(String url) async 
    print("\n\nStopped $url\n\n");
  

  @override
  void onLoadError(String url, int code, String message) 
    print("\n\nCan't load $url.. Error: $message\n\n");
  

  @override
  void onExit() 
    print("\n\nBrowser closed!\n\n");
  



class MyChromeSafariBrowser extends ChromeSafariBrowser 

  MyChromeSafariBrowser(browserFallback) : super(bFallback: browserFallback);

  @override
  void onOpened() 
    print("ChromeSafari browser opened");
  

  @override
  void onLoaded() 
    print("ChromeSafari browser loaded");
  

  @override
  void onClosed() 
    print("ChromeSafari browser closed");
  


void main() => runApp(new MyApp());

class MyApp extends StatefulWidget 
  final ChromeSafariBrowser browser = new MyChromeSafariBrowser(new MyInAppBrowser());

  @override
  _MyAppState createState() => new _MyAppState();


class _MyAppState extends State<MyApp> 

  @override
  void initState() 
    super.initState();
  

  @override
  Widget build(BuildContext context) 
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('ChromeSafariBrowser Example'),
        ),
        body: Center(
          child: RaisedButton(
              onPressed: () async 
                await widget.browser.open(
                    url: "https://flutter.dev/",
                    options: ChromeSafariBrowserClassOptions(
                        androidChromeCustomTabsOptions: AndroidChromeCustomTabsOptions(addShareButton: false),
                        iosSafariOptions: IosSafariOptions(barCollapsingEnabled: true)));
              ,
              child: Text("Open Chrome Safari Browser")),
        ),
      ),
    );
  

【讨论】:

我正在使用你的插件。您知道是否可以全屏使用 ChromeSafariBrowser 类? (不显示网址栏) 我刚刚发现,根据这篇文章,是不可能的:***.com/questions/38491936/… 是否可以在您的 webview 中运行自定义 javascript 代码?

如何在颤动的 webView 中屏蔽广告(移动应用中的网页)

】如何在颤动的webView中屏蔽广告(移动应用中的网页)【英文标题】:HowtoblockadsinaflutterwebView(webpageinmobileapp)【发布时间】:2021-11-1211:28:54【问题描述】:我使用webview_flutter插件制作了一个应用程序,webviews指向一个流式传输视... 查看详情

如何使后退按钮关闭在android上颤动的WebView插件应用程序

】如何使后退按钮关闭在android上颤动的WebView插件应用程序【英文标题】:HowcanImakethebackbuttoncloseflutterWebViewpluginapponandroid【发布时间】:2020-03-2213:33:55【问题描述】:我是在旅途中学习颤振的新手,当没有更多WebView返回历史记... 查看详情

如何允许 webview 中的 mailto 方案颤动

】如何允许webview中的mailto方案颤动【英文标题】:howtoallowmailtoschemesinwebviewflutter【发布时间】:2021-04-2900:17:12【问题描述】:我正在使用FlutterWebview插件开发Flutterwebview应用程序。import\'package:flutter/material.dart\';import\'package:webview_... 查看详情

在颤动的webview中禁用水平滚动

】在颤动的webview中禁用水平滚动【英文标题】:Disablehorizontalscrollinginflutterwebview【发布时间】:2019-04-2003:53:35【问题描述】:我正在使用这个颤振WebView插件https://pub.dartlang.org/packages/flutter_webview_plugin应用程序运行良好。但是,... 查看详情

在颤动的 webview 之间共享 cookie

】在颤动的webview之间共享cookie【英文标题】:Sharecookiesbetweenflutterwebviews【发布时间】:2021-01-2819:36:42【问题描述】:我正在使用这个插件开发一个带有Webviews的颤振应用程序:Flutter_inappwebview。首先,我在自己的域中加载带有登... 查看详情

颤动如何让gridview显示像按钮这样的firebase数据

】颤动如何让gridview显示像按钮这样的firebase数据【英文标题】:flutterhowtomakegridviewshowfirebasedatalikebuttons【发布时间】:2019-09-1012:44:13【问题描述】:我正在尝试使用Streambuilder来显示gridview,但它返回此错误,我正在调用方法class... 查看详情

颤动缓存网页中的webview吗?

】颤动缓存网页中的webview吗?【英文标题】:Dothewebviewinfluttercachedwebpage?【发布时间】:2020-03-2923:33:19【问题描述】:我想缓存我在flutterwebview中显示的网页,以提高我的性能,无需重新加载页面。那可用吗?我可以实现它吗?... 查看详情

弹出键盘时颤动webview黑屏

】弹出键盘时颤动webview黑屏【英文标题】:Flutterwebviewblackscreenwhenkeyboardispoppingup【发布时间】:2021-01-1603:09:51【问题描述】:我在我的android项目中包含了颤振模块,颤振模块包含我用来加载应用程序url的webview(flutter_inappwebview)... 查看详情

后退按钮在颤动中无法在 Webview 中工作

】后退按钮在颤动中无法在Webview中工作【英文标题】:BackButtonnotworkinginsideWebviewinflutter【发布时间】:2021-10-1308:01:16【问题描述】:我通过包装willpopScope编写了代码,以便我可以获取webview的上一页,但它不起作用,因此它正在... 查看详情

在 webview 中颤动水平滑动手势

】在webview中颤动水平滑动手势【英文标题】:Flutterhorizontalswipegestureinwebview【发布时间】:2021-12-1311:59:58【问题描述】:我现在正在构建一个Flutter应用程序,它有一个登录信息,它会路由到一个新屏幕,其中包含一个脚手架,... 查看详情

如何让应用栏在所有页面中保持颤动?

】如何让应用栏在所有页面中保持颤动?【英文标题】:howtomaketheAppbarstayacrossallthepagesinflutter?【发布时间】:2021-08-0416:37:20【问题描述】:如何让应用栏在整个页面中保持持久不变?我尝试创建一个单独的文件,然后在抽屉属... 查看详情

在颤动的WebView输入之外点击时关闭键盘

】在颤动的WebView输入之外点击时关闭键盘【英文标题】:ClosekeyboardwhentapoutsidetheWebViewinputinflutter【发布时间】:2021-12-2018:48:42【问题描述】:我为此工作了4个多小时,但无法完成。我想要做的是在输入焦点区域外点击时隐藏键... 查看详情

如何让服务器知道根据指纹颤动发送哪些数据?

】如何让服务器知道根据指纹颤动发送哪些数据?【英文标题】:Howtomakeserverknowwhatdatatosenddependingonfingerprintflutter?【发布时间】:2020-12-2110:54:54【问题描述】:我想将登录到应用程序的用户名和密码替换为flutter中的指纹,这样... 查看详情

如何在颤动中从本地html文件中的链接开始新页面

...述】:我想从本地html文件中的链接开始新页面。我想从webview(Page_one)转到Page_two.dart页面。我加载的webview没问题。<pstyle="margin-left:30px;"> 查看详情

在颤动中从webview中删除html元素

】在颤动中从webview中删除html元素【英文标题】:Deletinghtmlelementfromwebviewinflutter【发布时间】:2020-04-2103:24:52【问题描述】:我尝试动态移除元素,但移除的元素仍显示在屏幕上,并在单击元素时被移除。这是我使用的代码onPageF... 查看详情

如何让chrome支持ajax本地访问

前段时间一直用Chrome和Safari来支持HTML5的运用,在测试的过程中发现原来由于Chrome的安全机制不能支持ajax的本地访问,例如:在JavaScript里面访问URL:file:///E:/test.html,Chrome浏览器报错:XMLHttpRequestcannotloadfile:///E:/test.html.Originnullis... 查看详情

如何设置webview支持js的alert,confirm,prompt函数的弹出提示框.(代码片段)

默认情况下,AndroidWebView是不支持js的Alert(),Confirm(),Prompt()函数的弹出提示框的.即使设置了setJavaScriptEnabled(true);也是没用的.那么,如何才能让WebView可以支持js的这3个函数呢.可以通过设置WebChromeClient对象来完成.WebChromeClient主要辅助We... 查看详情

WebView颤动:初始化url时无法将'cookie'设置为标题

】WebView颤动:初始化url时无法将\\\'cookie\\\'设置为标题【英文标题】:WebViewflutter:Failedtosetthe\'cookie\'intoheaderwheninitializeurlWebView颤动:初始化url时无法将\'cookie\'设置为标题【发布时间】:2021-03-0803:22:26【问题描述】:我正在使用w... 查看详情