setOnStateChanged method

void setOnStateChanged(
  1. OnStateChanged? stateChanged
)

播放器状态改变回调

Implementation

void setOnStateChanged(OnStateChanged? stateChanged) {
  this.onStateChanged = stateChanged;
  FlutterAliPlayerFactory.methodChannel.invokeMethod(
      'setOnStateChanged', wrapWithPlayerId(arg: (null != stateChanged)));
  if (null != stateChanged) {
    BasicMessageChannel<String> _basicMessageChannel =
    BasicMessageChannel<String>(
      "aliPlayer_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 '';
    });
  }
}