getProduct method

  1. @override
Future<Product?> getProduct({
  1. required String productId,
})
override

获取产品信息

Implementation

@override
Future<Product?> getProduct({required String productId}) async {
  safeLog('📤 [MethodChannel] 调用 getProduct, productId: $productId');
  try {
    final result = await methodChannel.invokeMethod('getProduct', {
      'productId': productId,
    });
    if (result == null) {
      safeLog('⚠️ [MethodChannel] getProduct 返回 null');
      return null;
    }
    if (result is Map) {
      try {
        final map = _deepConvertMap(result);
        final product = Product.fromMap(map);
        safeLog('✅ [MethodChannel] getProduct 解析成功: ${product.id}');
        return product;
      } catch (e, stackTrace) {
        safeLog(
          '⚠️ [MethodChannel] getProduct 返回类型无法转换为 Product: ${result.runtimeType}, $e',
          error: e,
          stackTrace: stackTrace,
        );
        return null;
      }
    }
    safeLog('⚠️ [MethodChannel] getProduct 返回类型不正确: ${result.runtimeType}');
    return null;
  } catch (e, stackTrace) {
    safeLog(
      '❌ [MethodChannel] getProduct 失败: $e',
      error: e,
      stackTrace: stackTrace,
    );
    rethrow;
  }
}