from static method
Factory that creates a NetworkFailure if the error matches, otherwise returns null
Implementation
static NetworkFailure? from(Object error, StackTrace? stackTrace) {
final message = error.toString().toLowerCase();
// More precise matching for network errors
// We avoid generic words like "connection" unless paired with specific failure modes
if (message.contains('socketexception') ||
(message.contains('connection') &&
(message.contains('refused') ||
message.contains('reset') ||
message.contains('closed') ||
message.contains('timeout') ||
message.contains('error'))) ||
message.contains('network is unreachable') ||
message.contains('no internet') ||
message.contains('no address associated') ||
message.contains('failed host lookup') ||
message.contains('handshakeexception')) {
return NetworkFailure(
error.toString(),
stackTrace: stackTrace,
cause: error,
);
}
return null;
}