我最近注意到,当在一些Android应用程序中打开链接时,它们具有类似的外观和自定义操作菜单,并且在自定义菜单下带有“由Chrome驱动”。在此使用了什么组件,或者仍然是Chromium WebView?希望我希望将它们添加到我的下一个项目中,这些项目涉及在应用程序内打开链接。实现像Flutter中的桌面视图一样。
平台:andriod webview:具有自定义选项的chrome驱动的webview 框架:颤抖
LinkedIn应用
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
提前谢谢。
答案 0 :(得分:2)
您可以使用此软件包:
https://pub.dartlang.org/packages/flutter_custom_tabs
但是请注意,此行为仅在Android上有效,在iOS上将使用Safari Webview。
答案 1 :(得分:0)
您可以尝试使用我的插件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")),
),
),
);
}
}