getQuery<T> method

T? getQuery<T>(
  1. String key, {
  2. T? defaultValue,
})

Gets a query parameter with type conversion.

Supports common types: int, double, bool, String, List<String>. Returns null if the parameter doesn't exist or can't be converted.

Implementation

T? getQuery<T>(String key, {T? defaultValue}) {
  final value = _raw.uri.queryParameters[key];
  if (value == null || value.isEmpty) {
    return defaultValue;
  }

  try {
    if (T == int) {
      return int.tryParse(value) as T?;
    } else if (T == double) {
      return double.tryParse(value) as T?;
    } else if (T == bool) {
      if (value.toLowerCase() == 'true' || value == '1') return true as T?;
      if (value.toLowerCase() == 'false' || value == '0') return false as T?;
      return null;
    } else if (T == String) {
      return value as T?;
    } else if (T == List<String>) {
      return value.split(',').map((s) => s.trim()).toList() as T?;
    }
  } catch (_) {
    // Return default value on parsing error
  }

  return defaultValue;
}