import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:from_css_color/from_css_color.dart'; import 'package:hub/backend/schema/enums/enums.dart'; import 'package:hub/flutter_flow/flutter_flow_util.dart'; import 'package:hub/flutter_flow/nav/serialization_util.dart'; export 'package:collection/collection.dart' show ListEquality; export 'package:flutter/material.dart' show Color, Colors; export 'package:from_css_color/from_css_color.dart'; typedef StructBuilder = T Function(Map data); abstract class BaseStruct { Map toSerializableMap(); String serialize() => json.encode(toSerializableMap()); } dynamic deserializeStructParam( dynamic param, ParamType paramType, bool isList, { required StructBuilder structBuilder, }) { if (param == null) { return null; } else if (isList) { final paramValues; try { paramValues = param is Iterable ? param : json.decode(param); } catch (e) { return null; } if (paramValues is! Iterable) { return null; } return paramValues .map((e) => deserializeStructParam(e, paramType, false, structBuilder: structBuilder)) .toList(); } else if (param is Map) { return structBuilder(param); } else { return deserializeParam( param, paramType, isList, structBuilder: structBuilder, ); } } List? getStructList( dynamic value, StructBuilder structBuilder, ) => value is! List ? null : value .whereType>() .map((e) => structBuilder(e)) .toList(); List? getEnumList(dynamic value) => value is! List ? null : value.map((e) => deserializeEnum(e)).withoutNulls; Color? getSchemaColor(dynamic value) => value is String ? fromCssColor(value) : value is Color ? value : null; List? getColorsList(dynamic value) => value is! List ? null : value.map(getSchemaColor).withoutNulls; List? getDataList(dynamic value) => value is! List ? null : value.map((e) => castToType(e)!).toList();