getProduct method
获取产品信息
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;
}
}