【问题标题】:how to get Chrome Powered webview in flutter?如何让 Chrome 支持的 webview 颤动?
【发布时间】: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
  • 是的,就是这样,如何让它颤动?投票给我的问题:)

标签: android google-chrome webview dart flutter


【解决方案1】:

你可以使用这个包:

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

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

【讨论】:

【解决方案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 类? (不显示网址栏)
  • 我刚刚发现,根据这篇文章,是不可能的:stackoverflow.com/questions/38491936/…
  • 是否可以在您的 webview 中运行自定义 javascript 代码?
猜你喜欢
  • 2023-03-24
  • 1970-01-01
  • 2017-02-08
  • 2023-03-17
  • 2015-06-14
  • 1970-01-01
  • 1970-01-01
  • 2012-04-07
  • 1970-01-01
相关资源
最近更新 更多