jsonValueToList<T> method

List<T>? jsonValueToList<T>(
  1. dynamic value, {
  2. T itemConvert(
    1. dynamic
    )?,
})

Implementation

List<T>? jsonValueToList<T>(dynamic value, {T Function(dynamic)? itemConvert}) {
  List<T> returnValue = [];
  List? dynamicListValue;
  if (value == null) return null;
  if (value is List) {
    dynamicListValue = value;
  } else {
    if (value is String) {
      try {
        var decode = jsonDecode(value);
        if (decode is List) dynamicListValue = decode;
      } catch (e) {}
    }
  }
  if (dynamicListValue != null) {
    if (itemConvert == null && "" is T) itemConvert = (e) => e.toString() as T;
    for (var item in dynamicListValue) {
      if (item is T) {
        returnValue.add(item);
      } else if (itemConvert != null) {
        returnValue.add(itemConvert(item));
      }
    }
    return returnValue;
  }
  return null;
}