Проблема встроенного носителя пакета Flutter webview

#flutter #webview #webview-flutter

#флаттер #webview #webview-flutter

Вопрос:

webview_flutter 1.0.7 использует ваш пакет. https://github.com/flutter/plugins/pull/3334/commits/1d7e5ebab3c86bf5f2bf252ae14bca87be33c414 Я внес изменения на страницу. Хотя я внес все изменения, ipad работает в полноэкранном режиме, но iphone не работает

примеры видео, как показано ниже https://user-images.githubusercontent.com/57063848/104122686-8abf8700-5357-11eb-96b4-beb18cc5c4e1.mov

https://user-images.githubusercontent.com/57063848/104122691-901cd180-5357-11eb-9dcc-aa6b842263de.mov

пример кода

 import 'package:flutter/material.dart';
import 'package:webview_flutter/webview_flutter.dart';

void main() => runApp(MyApp());


class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Welcome to Flutter',
      home: Scaffold(
        body: WebView(
          initialUrl: "https://www.medivizyon.com.tr/in5",
          javascriptMode: JavascriptMode.unrestricted,
          initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow,
          allowsInlineMediaPlayback: true,
          ),
      ),
    );
  }
 

flutter doctor -v

 [✓] Flutter (Channel stable, 1.22.5, on Mac OS X 10.15.7 19H2 darwin-x64, locale tr-TR)
    • Flutter version 1.22.5 at /Users/gokhan/flutter
    • Framework revision 7891006299 (4 weeks ago), 2020-12-10 11:54:40 -0800
    • Engine revision ae90085a84
    • Dart version 2.10.4

 
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at /Users/gokhan/Library/Android/sdk
    • Platform android-29, build-tools 29.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.3, Build version 12C33
    • CocoaPods version 1.10.0

[✓] Android Studio (version 4.0)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 46.0.2
    • Dart plugin version 193.7361
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6222593)

[✓] VS Code (version 1.52.1)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.18.1
 

pubspec.yaml

 version: 1.0.0 1

environment:
  sdk: ">=2.8.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter


  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^1.0.0
  webview_flutter: ^1.0.7
  
dev_dependencies:
  flutter_test:
    sdk: flutter

# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec

# The following section is specific to Flutter.
flutter:

  # The following line ensures that the Material Icons font is
  # included with your application, so that you can use the icons in
  # the material Icons class.
  uses-material-design: true
 

Ответ №1:

вчера pythoneer прокомментировал

Каково текущее состояние этой проблемы? Flutter 2 стабилен и выпущен, и то же самое верно для webview_flutter в версии 2.0.2 . Я вижу, что для этого вносятся изменения

 } else if ([key isEqualToString:@"allowsInlineMediaPlayback"]) {
  NSNumber* allowsInlineMediaPlayback = settings[key];
  _webView.configuration.allowsInlineMediaPlayback = [allowsInlineMediaPlayback boolValue];
} else {
 

Но у меня нет желаемого эффекта. Он по-прежнему работает не так, как описано в этом выпуске. Если я разветвляю это и применяю изменения вручную

 WKWebViewConfiguration* configuration = [[WKWebViewConfiguration alloc] init];
configuration.userContentController = userContentController;
[self updateAutoMediaPlaybackPolicy:args[@"autoMediaPlaybackPolicy"]
                    inConfiguration:configuration];

configuration.allowsInlineMediaPlayback = true;
 

он работает так, как ожидалось.