0

フラッターで Facebook ビデオを制御しようとしています。flutter_inappwebview を使用しています。クロムでhtml(以下、コード内)を実行すると魅力的に機能しますが、アプリで使用するとエラーが発生し、ビデオをクリックできないため再生されません。

使用<iframe>してみましたが、ビデオをクリックして再生/一時停止するのは簡単ですが、アプリ内でビデオを制御できるようにビデオ コントローラーが必要です。

これが私のコードです

class PLAYER extends StatefulWidget {
  const PLAYER({Key? key}) : super(key: key);

  @override
  _PLAYERState createState() => _PLAYERState();
}

class _PLAYERState extends State<PLAYER> {
  String player = ''' 
  <html>
  <body>
  <script>
  window.fbAsyncInit = function() {
        FB.init({
          appId      : 'my adpp id',
          xfbml      : true,
          version    : 'v3.2'
        });
      var my_video_player;
  FB.Event.subscribe('xfbml.ready', function(msg) {
  console.log("readyy");
    if (msg.type === 'video') {
      my_video_player = msg.instance;
      var myEventHandler = my_video_player.subscribe('startedPlaying', function(e) {
  console.log("started playing");
  });
    }
  });}


  </script>
  <div id="fb-root"></div>
  <script async defer src="https://connect.facebook.net/en_US/sdk.js"></script>

  <div class="fb-video"    
     data-href="https://www.facebook.com/facebook/videos/10153231379946729/" 
     data-autoplay="false"
     data-width="100%" data-show-text="false" data-allowfullscreen="false">
  </div>
  </body>
  </html>
  ''';

  late InAppWebViewController controller;
  var txt = "text";

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: ListView(
        shrinkWrap: true,
        children: [
          Container(
            height: 200,
            child: InAppWebView(
              initialData: InAppWebViewInitialData(data: player),
              onConsoleMessage: (wc, log) {
                setState(() {
                  txt = txt + "\n\n\n\n\n\n" + log.message;
                });
              },
              onWebViewCreated: (webController) {
                controller = webController;
              },
            ),
          ),
          Padding(
            padding: const EdgeInsets.all(8.0),
            child: Text(txt),
          )
        ],
      ),
    );
  }
}

アプリでこのコードを実行するとエラーが発生します。

I/flutter (10098): {message: ErrorUtils caught an error:
I/flutter (10098): 
I/flutter (10098): Minified invariant #11793;  Params: about
I/flutter (10098): 
I/flutter (10098): Subsequent non-fatal errors won't be logged; 
4

0 に答える 0