我想制作"webview_flutter";包仅在chrome浏览器上运行。
但我不知道这是否可能。
或者,如果我误解了什么,也请告诉我。
您可以尝试插件flatter_inappwebview。要做到这一点,您需要使用ChromeSafariBrowser类。
它在Android上使用Chrome自定义选项卡,在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("nnStarted $urlnn");
}
@override
Future onLoadStop(String url) async {
print("nnStopped $urlnn");
}
@override
void onLoadError(String url, int code, String message) {
print("nnCan't load $url.. Error: $messagenn");
}
@override
void onExit() {
print("nnBrowser closed!nn");
}
}
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")),
),
),
);
}
}
或者您可以让自己的浏览器遵循以下示例:https://inappwebview.dev/docs/in-app-webview/basic-usage/