callbackHandler method

dynamic callbackHandler(
  1. dynamic callData
)

Implementation

callbackHandler(dynamic callData) {
  String uuid = callData['eventId'];
  List<dynamic> args = callData['args'];
  List<Object?> argTypes = callData['argTypes'];
  String methodName = callData['method'];
  dynamic callbacks = CallbackQueue.instance._callbacks[uuid];

  // 通用类型转换实现
  for (int index = 0; index < args.length; index++) {
    dynamic arg = args[index];
    Object? type = argTypes[index];
    if (type != null || !['Int', 'String', 'Boolean'].contains(type)) {
      // 有值则做转换
      args[index] = arg;
    }
    // 否则不做处理
  }

  // 是否要移除监听,表示所有监听回调完成
  bool needRemove = callbacks.call(methodName, args) ?? false;
  if (needRemove) {
    CallbackQueue.instance._callbacks.remove(uuid);
  }
}