addTimCallback2Map static method
注册一个标准的 V2TimCallback 回调到 _apiCallbackMap。
本函数只负责"注册",清理 map 的责任由调用方承担。调用方必须配套写:
NativeLibraryManager.addTimCallback2Map(userData, completer);
completer.future.whenComplete(() => NativeLibraryManager.removeTimCallbackFromMap(userData));
这一配对模式确保 add 和 remove 在调用方代码中显式成对出现("在哪里 add,
就在哪里 remove"),可读性最高、最不容易漏。whenComplete 覆盖所有 completion
路径(native 回调、失败早返主动 complete、超时主动 complete)的 map 清理。
详情参见 removeTimCallbackFromMap 的注释。
Implementation
static void addTimCallback2Map(String userData, Completer<V2TimCallback> completer) {
_apiCallbackMap[userData] = (Map jsonResult) {
// 双保险:即使 closure 因任何原因被多次取出调用,也不会触发 "Bad state"。
if (completer.isCompleted) return;
completer.complete(V2TimCallback.fromJson(jsonResult));
};
}