openModule<T> static method

Future<ModuleResult<T>> openModule<T>({
  1. required String module,
  2. required Map<String, dynamic> params,
  3. void onError(
    1. Object error
    )?,
})

打开模块

Implementation

static Future<ModuleResult<T>> openModule<T>({
  required String module,
  required Map<String, dynamic> params,
  void Function(Object error)? onError,
}) async {
  try {
    // 结束其他模块
    for (final handler in instance._moduleHandlers.values) {
      try {
        final shouldContinue = await handler.endModule(module, params);
        if (!shouldContinue) {
          return ModuleResult.failure(
            StateError('Module termination requested'),
          );
        }
      } catch (e) {
        onError?.call(e);
        return ModuleResult.failure(e);
      }
    }

    // 执行目标模块
    final handler = instance._moduleHandlers[module];
    if (handler == null) {
      final error = StateError('Module "$module" not found');
      onError?.call(error);
      return ModuleResult.failure(error);
    }

    final result = await handler.executeModule(params);
    return ModuleResult.success(result as T?);
  } catch (e) {
    onError?.call(e);
    return ModuleResult.failure(e);
  }
}