Solución:
No hay.
Lo que estás pidiendo es reflexión. Puedes usar el dart:mirrors
API para eso, si la biblioteca está disponible en su plataforma (no está en Flutter). Es posible que pueda generar código para ello utilizando package:reflectable
. O puedes usar package:json_serializable
para generar un Map
de un objeto.
Si solo está tratando de hacer algo para una clase en particular, simplemente escribiría manualmente:
dart
Map<String, dynamic> toJson() => {"id": id, "title": title, "article": article};
y luego utilícelo cuando desee iterar.
Esto me molesta casi todos los días. También es un problema en el lado web de Dart. En mi opinión, esta es una de las principales deficiencias de Dart …
Sin embargo, aquí está mi solución. Estoy usando una clase de interfaz para estas clases “serializables”.
abstract class JsonTO {
Map<String, dynamic> toJson();
}
class Device implements JsonTO {
Map<String, dynamic> toJson() {
return ... Your serialization thing
}
}
main() {
final device = Device();
final json = device.toJson();
json.forEach((final String key, final value) {
_logger.info("Key: {{$key}} -> value: ${value}");
// do with this info whatever you want
});
}