颤振:SFSafariViewController 不像原生 iOS 模式那样打开

     2023-03-14     116

关键词:

【中文标题】颤振:SFSafariViewController 不像原生 iOS 模式那样打开【英文标题】:flutter: SFSafariViewController doesn't open like a native iOS modal 【发布时间】:2020-06-16 08:35:25 【问题描述】:

为了在我的 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。

你能帮我解决这个问题吗?

【问题讨论】:

【参考方案1】:

您应该向flutter_inappwebview 提交问题。该包使用本机模式演示文稿,看起来它做得不正确。

如果您想使用 modal_bottom_sheet 包作为您附加的 gif,则不能使用 ChromeSafariBrowser,而需要使用 InAppWebViewChromeSafariBrowser 是 Fl​​utter 外部的原生活动,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;
                    );
                  ,
                ),

【讨论】:

【参考方案2】:

这已在 v4.0.0 版本中得到修复,现在可以通过设置获得预期的行为

presentationStyle: IOSUIModalPresentationStyle.POPOVER

更多信息在这里:https://pub.dev/packages/flutter_inappwebview#-changelog-tab-

【讨论】:

SFSafariViewController 作为子视图

】SFSafariViewController作为子视图【英文标题】:SFSafariViewControllerassubview【发布时间】:2016-05-1613:29:53【问题描述】:我想使用SFSafariViewController但仍然在下面添加一些我自己的按钮。我还没有找到方法来做到这一点。我尝试过使用... 查看详情

在 sfsafariviewcontroller 中隐藏控件

】在sfsafariviewcontroller中隐藏控件【英文标题】:Hidecontrolsinsfsafariviewcontroller【发布时间】:2019-07-1711:09:05【问题描述】:letsfViewController=SFSafariViewController(url:url)sfViewController.delegate=selfself.ViewC!.present(sfViewControlle 查看详情

SFSafariViewController 详细信息

】SFSafariViewController详细信息【英文标题】:SFSafariViewControllerdetails【发布时间】:2017-06-2004:27:55【问题描述】:我在这里,第一次使用SFSafariViewController。在我像其他人一样直接打开Safari或使用WKWebView之前。根据我在网上找到的... 查看详情

SFSafariViewController 关闭后的背景音频

】SFSafariViewController关闭后的背景音频【英文标题】:SFSafariViewControllerbackgroundaudioafterclosing【发布时间】:2019-08-1313:52:19【问题描述】:我有一个使用SFSafariViewController加载网页的应用,并且用户收听了一些音频。即使用户关闭SFS... 查看详情

SFSafariViewController 显示任何 URL 的空白屏幕

】SFSafariViewController显示任何URL的空白屏幕【英文标题】:SFSafariViewControllerdisplaysemptyscreenforanyURL【发布时间】:2017-08-1118:41:38【问题描述】:我正在尝试使用SFSafariViewController显示URL。这是我的代码:(topmostController指向,是的,... 查看详情

检测 SFSafariViewController 中的 URL 更改

】检测SFSafariViewController中的URL更改【英文标题】:DetectURLchangeinSFSafariViewController【发布时间】:2017-02-1220:13:56【问题描述】:我有一个SFSafariViewController,当用户点击我的应用程序中的链接时它会打开。我需要检测URL何时更改,... 查看详情

FBSDK 登录 - SFSafariViewController 已禁用?

】FBSDK登录-SFSafariViewController已禁用?【英文标题】:FBSDKLogin-SFSafariViewControllerisdisabled?【发布时间】:2016-09-0810:32:37【问题描述】:我的应用程序在一夜之间遇到了一个问题,我认为这是一个编码错误。问题是SFSafariViewController... 查看详情

使用 SFSafariViewController 下载文档

】使用SFSafariViewController下载文档【英文标题】:DownloaddocumentswithSFSafariViewController【发布时间】:2017-01-0706:12:55【问题描述】:SFSafariViewController不能下载文件吗?我正在尝试这样做,但没有出现“保存到”对话框。它从在原生Saf... 查看详情

使用 SFSafariViewController 的主要优势是啥?

】使用SFSafariViewController的主要优势是啥?【英文标题】:WhatisthemainadvantageofusingSFSafariViewController?使用SFSafariViewController的主要优势是什么?【发布时间】:2017-01-0905:19:13【问题描述】:如果我们使用[[UIApplicationsharedApplication]openUr... 查看详情

指定 SFSafariViewController 用户代理

】指定SFSafariViewController用户代理【英文标题】:specifySFSafariViewControlleruseragent【发布时间】:2017-08-0707:04:36【问题描述】:我在指定从SFSafariViewController访问时遇到问题,因为它具有与Safari浏览器完全相同的用户代理。我要做的... 查看详情

SFSafariViewController 加载空白页

】SFSafariViewController加载空白页【英文标题】:SFSafariViewControllerloadingblankwhitepage【发布时间】:2016-09-2313:51:08【问题描述】:我正在使用SFSafariViewController在我的iOS应用程序中打开一个URL。它在iOS9上运行良好,但在将我的设备更... 查看详情

如何快速关闭 SFSafariViewController

】如何快速关闭SFSafariViewController【英文标题】:HowtodismissaSFSafariViewControllerinswift【发布时间】:2020-05-0818:50:56【问题描述】:我有一个函数可以实例化并显示一个显示登录页面的SFSafariViewControllerpublicfuncauthorizeSafariEmbedded(fromcontr... 查看详情

如何防止通过推送 SFSafariViewController 解雇 UITabBarController?

】如何防止通过推送SFSafariViewController解雇UITabBarController?【英文标题】:HowtopreventdismissalofUITabBarControllerbypushedSFSafariViewController?【发布时间】:2019-04-1912:23:57【问题描述】:我正在将SFSafariViewController推入UITabBarController。但是单... 查看详情

SFSafariViewController 完成按钮不起作用/触摸区域太小

】SFSafariViewController完成按钮不起作用/触摸区域太小【英文标题】:SFSafariViewControllerDonebuttonnotworking/touchareatoosmall【发布时间】:2017-05-2618:25:47【问题描述】:我在SFSafariViewController中呈现如下链接:SFSafariViewController*sfvc=[[SFSafariV... 查看详情

SfSafariViewController 和共享 cookie 存储

】SfSafariViewController和共享cookie存储【英文标题】:SfSafariViewControllerandsharedcookiestorage【发布时间】:2019-10-2314:30:07【问题描述】:SFSafariViewController(SVC)是在iOS9中引入的,SVC可以从Mobilesafari而不是从应用程序读取cookie,它可以写... 查看详情

Android 相当于 iOS 的 SFSafariViewController

】Android相当于iOS的SFSafariViewController【英文标题】:AndroidequivalentofiOS\'SFSafariViewController【发布时间】:2020-06-2709:58:53【问题描述】:在iOS上,有3种显示网页内容的方式(正如一位iOS开发人员告诉我的):UIWebView显示在UIControllerVi... 查看详情

如何在 SwiftUI 中使用 SFSafariViewController?

】如何在SwiftUI中使用SFSafariViewController?【英文标题】:HowdoIuseSFSafariViewControllerwithSwiftUI?【发布时间】:2019-06-0920:10:00【问题描述】:我正在尝试从NavigationButton呈现SFSafariViewController,但我不确定如何使用SwiftUI来实现。在UIKit中... 查看详情

是否可以在 UITabBarController 内显示 SFSafariViewController?

】是否可以在UITabBarController内显示SFSafariViewController?【英文标题】:IsitpossibletodisplayaSFSafariViewControllerinsideofaUITabBarController?【发布时间】:2016-05-0703:50:48【问题描述】:我想在标签中加载SFSafariViewController,因此标签栏位于整个S... 查看详情