gets<T extends Object?> static method

List<T> gets<T extends Object?>({
  1. String? key,
  2. String? path,
  3. String? name,
  4. List<T>? defaultValue,
  5. bool applyTranslator = true,
  6. List<String> autoTranslatorFields = const [],
  7. T? parser(
    1. Object?
    )?,
})

Implementation

static List<T> gets<T extends Object?>({
  String? key,
  String? path,
  String? name,
  List<T>? defaultValue,
  bool applyTranslator = true,
  List<String> autoTranslatorFields = const [],
  T? Function(Object?)? parser,
}) {
  Object? localed;
  if ((key ?? '').isNotEmpty) {
    localed = i._trx(
      key!,
      name: name,
      defaultValue: defaultValue,
      applyTranslator: applyTranslator,
      autoTranslatorFields: autoTranslatorFields,
    );
    applyTranslator = applyTranslator && localed == null;
    localed ??= i._l(path: path);
  } else {
    localed = i._l(path: path);
  }
  if (localed is Iterable<T>) return localed.toList();
  if (localed == null) {
    if (defaultValue != null) return defaultValue;
    localed = defaultValue;
  }
  if (applyTranslator) {
    localed = i._tr(
      localed,
      true,
      autoTranslatorFields: autoTranslatorFields,
    );
  }
  if (localed is! Iterable) return defaultValue ?? [];
  final parsed = localed.map((e) {
    if (e is T) return e;
    if (parser != null) return parser(e);
    return null;
  });
  final filtered = parsed.whereType<T>().toList();
  return filtered;
}