フラッターで 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;