Flutter: ¿Cómo podemos cargar un mapa desde un archivo dart?

Aunque no es en todos los casos, en ocasiones necesitamos trabajar con información finita en nuestra aplicación (colores, países, nombres) y para no cargar esos datos desde la red o desde una base de datos, la obtenemos desde un archivo. En este corto artículo les mostramos como hacer esto de manera sencilla.

El código que les mostramos lo pueden revisar en este enlace github y forma parte de un proyecto donde les muestro las diferentes formas de usar el widget ListView (que lo veremos en el próximo artículo). Aquí vamos a trabajar con una lista de recargas (esta claro que esta información no es finita), donde una recarga tiene el número de teléfono, el nombre del cliente (usaremos los personajes de la serie “Casa de Papel” una de mis favoritas), el monto, si fue enviada y si fue cobrada por el proveedor.

Archivo data.dart

const List<Map<String, dynamic>> RECARGAS = [
  {
    "telefono": "+53 54566792",
    "nombre": "El Profesor",
    "enviada": false,
    "cobrada": true,
    "monto": 20
  },
  {
    "telefono": "+53 56321078",
    "nombre": "Tokio",
    "enviada": true,
    "cobrada": true,
    "monto": 20
  },
  {
    "telefono": "+53 52560128",
    "nombre": "Lisboa",
    "enviada": false,
    "cobrada": false,
    "monto": 30
  },
  {
    "telefono": "+53 55671294",
    "nombre": "Berlín",
    "enviada": false,
    "cobrada": true,
    "monto": 15
  },
  {
    "telefono": "+53 53412095",
    "nombre": "Río",
    "enviada": true,
    "cobrada": true,
    "monto": 35
  },
  {
    "telefono": "+53 53412095",
    "nombre": "Denver",
    "enviada": false,
    "cobrada": true,
    "monto": 20
  },
  {
    "telefono": "+53 53412095",
    "nombre": "Estocolmo",
    "enviada": true,
    "cobrada": false,
    "monto": 20
  },
  {
    "telefono": "+53 56678123",
    "nombre": "Helsinki",
    "enviada": true,
    "cobrada": true,
    "monto": 15
  },
  {
    "telefono": "+53 45672318",
    "nombre": "Nairobi",
    "enviada": true,
    "cobrada": false,
    "monto": 20
  },
  {
    "telefono": "+53 56439012",
    "nombre": "Moscú",
    "enviada": true,
    "cobrada": false,
    "monto": 10
  },
  {
    "telefono": "+53 54671203",
    "nombre": "Mariví",
    "enviada": true,
    "cobrada": false,
    "monto": 50
  },
  {
    "telefono": "+53 55128942",
    "nombre": "Bogotá",
    "enviada": true,
    "cobrada": true,
    "monto": 10
  },
  {
    "telefono": "+53 45326781",
    "nombre": "Palermo",
    "enviada": false,
    "cobrada": true,
    "monto": 30
  },
  {
    "telefono": "+53 56431278",
    "nombre": "Marsella",
    "enviada": true,
    "cobrada": true,
    "monto": 25
  },
  {
    "telefono": "+53 56565441",
    "nombre": "Manila",
    "enviada": true,
    "cobrada": false,
    "monto": 40
  }
];

Veamos una clase para el mapeo de las recargas.

Archivo recarga.dart:

class Recarga {
  String telefono;
  String nombre;
  bool enviada;
  bool cobrada;
  int monto;
  Recarga({this.telefono, this.nombre, this.enviada, this.cobrada, this.monto});
  Recarga.fromMap(Map<String, dynamic> map) {
    telefono = map['telefono'];
    nombre = map['nombre'];
    enviada = map['enviada'];
    cobrada = map['cobrada'];
    monto = map['monto'];
  }
}

Con la funcionalidad Recarga.fromMap(Map map) convertimos los datos del mapa a un objeto de Recarga.

Ahora veamos una porción de código de como convertir la información estática en una lista de recargas.

import 'package:listview/models/data.dart';
  List<Recarga> _recargas = [] ;
  @override
  void initState() {
    _recargas = RECARGAS.map((recarga) => Recarga.fromMap(recarga)).toList() ;
  }

Como pueden ver es bastante cargar datos estáticos desde Flutter.

1 thought on “Flutter: ¿Cómo podemos cargar un mapa desde un archivo dart?

Comments are closed.