こんにちは開発者私は、ライブ ストリーミング ビデオを再生するために chewe プラグインを使用しています。これは、実際のデバイスで実行すると m3u8 ビデオ リンクであり、「getter '_duration' が null で呼び出されました」という例外が発生します。Androidデバイスでは正常に動作しますが、iOSの実際のデバイスでは動作します。私はiOSの実際のデバイスで問題を解決する方法を知りません。専門の開発者がここにいて、この問題を解決するのを助けることができるのは例外です。
flutter: Another exception was thrown: NoSuchMethodError: The getter '_duration' was called on null.
私のコード
import 'package:chewie/chewie.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:video_player/video_player.dart';
class ChewieListItem extends StatefulWidget {
// This will contain the URL/asset path which we want to play
final VideoPlayerController videoPlayerController;
final bool looping;
ChewieListItem({
@required this.videoPlayerController,
this.looping,
Key key,
}) : super(key: key);
@override
_ChewieListItemState createState() => _ChewieListItemState();
}
class _ChewieListItemState extends State<ChewieListItem> {
ChewieController _chewieController;
@override
void initState() {
super.initState();
// Wrapper on top of the videoPlayerController
_chewieController = ChewieController(
videoPlayerController: widget.videoPlayerController,
aspectRatio: 16 / 9,
// Prepare the video to be played and display the first frame
autoInitialize: true,
looping: widget.looping,
deviceOrientationsAfterFullScreen:[DeviceOrientation.portraitUp] ,
// Errors can occur for example when trying to play a video
// from a non-existent URL
errorBuilder: (context, errorMessage) {
return Center(
child: Text(
errorMessage,
style: TextStyle(color: Colors.white),
),
);
},
);
}
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: Chewie(
controller: _chewieController,
),
);
}
@override
void dispose() {
super.dispose();
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
]);
// IMPORTANT to dispose of all the used resources
widget.videoPlayerController.dispose();
_chewieController.dispose();
_chewieController.pause();
}
}
ストリーミング
child: Column(
children: <Widget>[
Expanded(
child: ChewieListItem(
videoPlayerController: VideoPlayerController.network(
'https://streamer12.vdn.dstreamone.net/livinghope/livinghope/playlist.m3u8',),
),
)