如何让 Chrome 支持的 webview 颤动?
Posted
技术标签:
【中文标题】如何让 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 代码?以上是关于如何让 Chrome 支持的 webview 颤动?的主要内容,如果未能解决你的问题,请参考以下文章