setOnStateChanged method

  1. @override
void setOnStateChanged(
  1. OnStateChanged? stateChanged
)
override

播放器状态改变回调

Implementation

@override
void setOnStateChanged(OnStateChanged? stateChanged) {
    this.onStateChanged = stateChanged;
    FlutterAliPlayerFactory.methodChannel.invokeMethod(
        'setOnStateChanged', wrapWithPlayerId(arg: (null != stateChanged)));
    if (null != stateChanged) {
      BasicMessageChannel<String> _basicMessageChannel =
      BasicMessageChannel<String>(
        "listPlayer_onStateChanged${playerId}",
        StringCodec(),
      );
      // 注册调用 Flutter 端的 callback, 并发送至 Native 端
      _basicMessageChannel.setMessageHandler((String? msg) async {
        Map<String, dynamic> map = jsonDecode(msg!);
        int newState = map['newState'];
        String playerId = map['playerId'];
        String method = map['method'];
        if (null != onStateChanged && method == "onStateChanged") {
          this.onStateChanged!(newState, playerId);
        }
        return '';
      });
    }
}