| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- part of 'ijkplayer.dart';
- class _IJKEventChannel {
- int get textureId => controller?.textureId;
- IjkMediaController controller;
- _IJKEventChannel(this.controller);
- MethodChannel channel;
- String get channelName => "top.kikt/ijkplayer/event/$textureId";
- Completer _prepareCompleter;
- Future<void> init() async {
- channel = MethodChannel(channelName);
- channel.setMethodCallHandler(handler);
- }
- void dispose() {
- channel.setMethodCallHandler(null);
- controller = null;
- }
- Future<dynamic> handler(MethodCall call) async {
- switch (call.method) {
- case "finish": // 播放完毕
- // var index = call.arguments["type"];
- // var type = FinishType.values[index];
- onPlayFinish(getInfo(call));
- break;
- case "playStateChange":
- onPlayStateChange(getInfo(call));
- break;
- case "prepare":
- onPrepare(getInfo(call));
- break;
- case "rotateChanged":
- onRotateChanged(call);
- break;
- default:
- return MissingPluginException(
- "$channelName ${call.method} not implement",
- );
- }
- return true;
- }
- VideoInfo getInfo(MethodCall call) {
- var map = call.arguments.cast<String, dynamic>();
- return VideoInfo.fromMap(map);
- }
- void onPlayFinish(VideoInfo info) {
- controller.isPlaying = info.isPlaying;
- controller.pause();
- }
- void onPlayStateChange(VideoInfo info) {
- controller.isPlaying = info.isPlaying;
- }
- void onPrepare(VideoInfo info) {
- controller.isPlaying = info.isPlaying;
- _prepareCompleter?.complete();
- _prepareCompleter = null;
- }
- Future<void> waitPrepare() {
- _prepareCompleter = Completer();
- return _prepareCompleter.future;
- }
- Future<void> autoPlay(IjkMediaController ijkMediaController) async {
- try {
- await waitPrepare();
- await ijkMediaController.play();
- } catch (e) {
- LogUtils.info(e);
- }
- }
- Future<void> disableAutoPlay(IjkMediaController ijkMediaController) async {
- try {
- await waitPrepare();
- await ijkMediaController.pause();
- } catch (e) {
- LogUtils.info(e);
- }
- }
- void onRotateChanged(MethodCall call) {
- var info = getInfo(call);
- LogUtils.debug("onRotateChanged , info = $info");
- }
- }
- // enum FinishType {
- // playEnd,
- // userExit,
- // error,
- // }
|