Skip to content

Artículos o incisos sobre deserialización de tipos de datos específicos #58

@andrespd99

Description

@andrespd99

Actualmente, el capítulo data/models carece de instrucciones sobre el manejo de DateTimes y Lists provenientes de un servicio externo.

Con este issue se busca incorporar estas reglas al capítulo. La propuesta del manejo de dichos tipos de datos es la siguiente:

  1. Para DateTime
class FooModel extends Foo {
   const FooModel({
      required super.date
   });
   
   factory FooClass.fromMap(DataMap data) {
      final date = DateTime.tryParse(data['date'] as String? ?? '') ?? DateTime.now();
      return FooClass(
         date: date
      );
   }
}

Las fechas deben tener seguridad contra nulidad y fechas en formatos inválidos (por ello, se propone el uso del constructor DateTime.tryParse).

  1. Para List
class FooModel extends Foo {
   const FooModel({
      required super.someList
   });
   
   factory FooClass.fromMap(DataMap data) {
      final list =  (map['some_list'] as List<dynamic>? ?? [])
         ..removeWhere((e) => e == null);
      return FooClass(
         someList: list
      );
   }
}

Esta propuesta de manejo de listas maneja el caso de que el campo venga nulo y elimina cualquier valor nulo dentro de la lista que pudiera causar una excepción en el mapeo de objetos.

Metadata

Metadata

Assignees

Labels

additiondata/modelsIssues relacionados al capítulo data/models

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions