class ApiException implements Exception { ApiException({ required this.message, this.statusCode, this.errorCode, this.billingUrl, }); final String message; final int? statusCode; final String? errorCode; final String? billingUrl; bool get isPremiumRequired => errorCode == 'premium_required'; @override String toString() => message; static ApiException? fromDio(dynamic error) { // ignore: avoid_dynamic_calls final response = error.response; if (response == null) return null; final data = response.data; if (data is! Map) return null; return ApiException( message: data['error'] as String? ?? 'Errore di rete', statusCode: response.statusCode as int?, errorCode: data['error_code'] as String?, billingUrl: data['billing_url'] as String?, ); } }