typedAssoc method

Map<String, dynamic> typedAssoc()

Same as assoc but detects best dart type for columns, and converts string data into appropriate types

Implementation

Map<String, dynamic> typedAssoc() {
  final result = <String, dynamic>{};

  int colIndex = 0;

  for (final colDef in _colDefs) {
    final value = _values[colIndex];

    if (value == null) {
      result[colDef.name] = null;
      colIndex++;
      continue;
    }

    final dartType = colDef.type.getBestMatchDartType(colDef.columnLength);

    dynamic decodedValue;

    switch (dartType) {
      case int:
        decodedValue = int.parse(value);
        break;
      case double:
        decodedValue = double.parse(value);
        break;
      case num:
        decodedValue = num.parse(value);
        break;
      case bool:
        decodedValue = int.parse(value) > 0;
        break;
      case String:
        decodedValue = value;
        break;
      default:
        decodedValue = value;
        break;
    }

    result[colDef.name] = decodedValue;

    colIndex++;
  }

  return result;
}