flutter: SFSafariViewController не открывается как родной iOS модальный - PullRequest
0 голосов
/ 16 июня 2020

Чтобы использовать SFSafariViewController в моем приложении Flutter, я использую этот пакет: flutter_inappwebview: ^ 3.3.0 + 3

Хотя это работает, в анимации есть ошибка через который появляется SFSafariViewController.

Обратите внимание на это:

Фактическое поведение

enter image description here

Ожидаемое поведение

enter image description here

Обратите внимание, как во втором GIF само приложение отодвигается назад, тогда как в первом GIF мы можем видеть полупрозрачное представление, созданное вместо исходного. pu sh обратная анимация для приложения.

Вот код, который я использую:

final ChromeSafariBrowser browser =
              MyChromeSafariBrowser(MyInAppBrowser());
          await browser.open(
              url: 'https://google.com',
              options: ChromeSafariBrowserClassOptions(
                  ios: IOSSafariOptions(
                      barCollapsingEnabled: true,
                      presentationStyle: IOSUIModalPresentationStyle.POPOVER)));

Вот Gist для классов MyChromeSafariBrowser и MyInAppBrowser.

Не могли бы вы мне с этим помочь?

Ответы [ 2 ]

1 голос
/ 16 июня 2020

Вы должны отправить проблему на flutter_inappwebview . В пакете используются собственные модальные представления, и похоже, что он делает это неправильно.

Если вы хотите использовать пакет modal_bottom_sheet в качестве прикрепленного вами файла gif, вы не можете использовать ChromeSafariBrowser, и вам нужно будет использовать вместо него InAppWebView. ChromeSafariBrowser - это нативное действие вне Flutter, а 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;
                    });
                  },
                ),
0 голосов
/ 30 июня 2020

Это было исправлено в выпуске v4.0.0, и теперь можно получить ожидаемое поведение, установив

presentationStyle: IOSUIModalPresentationStyle.POPOVER

Дополнительная информация здесь: https://pub.dev/packages/flutter_inappwebview# -changelog-tab-

...