flutter:SFSafariViewController 不像原生 iOS 模式那样打开
flutter: SFSafariViewController doesn't open like a native iOS modal
为了在我的 Flutter 应用程序中使用 SFSafariViewController,我使用了这个包:flutter_inappwebview: ^3.3.0+3
虽然这有效,但在显示 SFSafariViewController 的动画中存在错误。
注意这个:
实际行为
预期行为
请注意在第二个 GIF 中,应用程序本身是如何被推回的,而在第一个 GIF 中,我们可以看到创建了一个半透明视图,而不是应用程序的本机推回动画。
这是我使用的代码:
final ChromeSafariBrowser browser =
MyChromeSafariBrowser(MyInAppBrowser());
await browser.open(
url: 'https://google.com',
options: ChromeSafariBrowserClassOptions(
ios: IOSSafariOptions(
barCollapsingEnabled: true,
presentationStyle: IOSUIModalPresentationStyle.POPOVER)));
这是 MyChromeSafariBrowser 和 MyInAppBrowser Gist class。
你能帮我解决这个问题吗?
您应该向 flutter_inappwebview 提交问题。该软件包使用本机模态演示,但看起来没有正确执行。
如果您想使用 modal_bottom_sheet 包作为您附加的 gif,则不能使用 ChromeSafariBrowser
,您需要使用 InAppWebView
。
ChromeSafariBrowser
是 Flutter 外部的原生 activity 而 InAppWebView
是 Flutter 内部包装的原生视图。
InAppWebView(
initialUrl: "https://flutter.dev/",
initialHeaders: {},
initialOptions: InAppWebViewGroupOptions(
crossPlatform: InAppWebViewOptions(
debuggingEnabled: true,
)
),
onWebViewCreated: (InAppWebViewController controller) {
webView = controller;
},
onLoadStart: (InAppWebViewController controller, String url) {
setState(() {
this.url = url;
});
},
onLoadStop: (InAppWebViewController controller, String url) async {
setState(() {
this.url = url;
});
},
onProgressChanged: (InAppWebViewController controller, int progress) {
setState(() {
this.progress = progress / 100;
});
},
),
这已在 v4.0.0 版中修复,现在可以通过设置
获得预期的行为
presentationStyle: IOSUIModalPresentationStyle.POPOVER
这里有更多信息:https://pub.dev/packages/flutter_inappwebview#-changelog-tab-
为了在我的 Flutter 应用程序中使用 SFSafariViewController,我使用了这个包:flutter_inappwebview: ^3.3.0+3
虽然这有效,但在显示 SFSafariViewController 的动画中存在错误。
注意这个:
实际行为
预期行为
请注意在第二个 GIF 中,应用程序本身是如何被推回的,而在第一个 GIF 中,我们可以看到创建了一个半透明视图,而不是应用程序的本机推回动画。
这是我使用的代码:
final ChromeSafariBrowser browser =
MyChromeSafariBrowser(MyInAppBrowser());
await browser.open(
url: 'https://google.com',
options: ChromeSafariBrowserClassOptions(
ios: IOSSafariOptions(
barCollapsingEnabled: true,
presentationStyle: IOSUIModalPresentationStyle.POPOVER)));
这是 MyChromeSafariBrowser 和 MyInAppBrowser Gist class。
你能帮我解决这个问题吗?
您应该向 flutter_inappwebview 提交问题。该软件包使用本机模态演示,但看起来没有正确执行。
如果您想使用 modal_bottom_sheet 包作为您附加的 gif,则不能使用 ChromeSafariBrowser
,您需要使用 InAppWebView
。
ChromeSafariBrowser
是 Flutter 外部的原生 activity 而 InAppWebView
是 Flutter 内部包装的原生视图。
InAppWebView(
initialUrl: "https://flutter.dev/",
initialHeaders: {},
initialOptions: InAppWebViewGroupOptions(
crossPlatform: InAppWebViewOptions(
debuggingEnabled: true,
)
),
onWebViewCreated: (InAppWebViewController controller) {
webView = controller;
},
onLoadStart: (InAppWebViewController controller, String url) {
setState(() {
this.url = url;
});
},
onLoadStop: (InAppWebViewController controller, String url) async {
setState(() {
this.url = url;
});
},
onProgressChanged: (InAppWebViewController controller, int progress) {
setState(() {
this.progress = progress / 100;
});
},
),
这已在 v4.0.0 版中修复,现在可以通过设置
获得预期的行为presentationStyle: IOSUIModalPresentationStyle.POPOVER
这里有更多信息:https://pub.dev/packages/flutter_inappwebview#-changelog-tab-