解决flutter中webview视频流播放Android正常,ios下有声音没图像问题

2,742 阅读1分钟

最近用flutter开发一个通过webview进行视频流播放的app,一开始用Android手机测试,一切都没有问题,但在ios上运行时,发现视频只有声音没有图像,于是开始查找各种资料,基本都是这么解答的:

需要在info.plist 中增加代码:

<key>io.flutter.embedded_views_preview</key>
<true/>
<key>NSAppTransportSecurity</key>
<dict>
   <key>NSAllowsArbitraryLoads</key>
   <true/>
   <key>NSAllowsArbitraryLoadsInWebContent</key>
   <true/>
</dict>

然后在初始化webview的时候,增加

allowsInlineMediaPlayback: true,

但仍然没有解决问题。

最后找了很多资料,找到解决方案

需要在初始化webview的时候,再增加一个参数

initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow,

整体代码如下:

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

class Browser extends StatelessWidget {
  const Browser({Key key, this.url, this.title}) : super(key: key);

  final String url;
  final String title;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: title != ''
          ? AppBar(
              title: Text(title),
            )
          : null,
      body: WebView(
          initialUrl: url,
          javascriptMode: JavascriptMode.unrestricted,
          allowsInlineMediaPlayback: true,
          initialMediaPlaybackPolicy: AutoMediaPlaybackPolicy.always_allow),
    );
  }
}

至此,ios下webview播放视频流图像和声音都有了。