chalona_api 0.0.4 copy "chalona_api: ^0.0.4" to clipboard
chalona_api: ^0.0.4 copied to clipboard

outdated

Librerias comunes a proyecto chalona

Librerias comunes a proyecto chalona

Features #

probando mientras tanto

Getting started #

dart pub get chalona_api

Usage #

Objeto util: #

contiene un conjunto de varias funciones utiles

String util.uuid();

devuelve un codigo unico aleatorio

util.coalesce

devuelve el primer valor no nulo de una lista, si la lista no lo tiene devuelve nulo

List<Map<String, dynamic>> util.toList(List? x)

convierte List

Map<String, dynamic> util.fixSearchArgs(Map? x)

convierte List

bool util.inList

devuelve verdadero si encuentra x en la lista

static String util.jsonToString(args)

convierte json to string tomando el cuenta los dato tipo date

util.now()

devuele la fecha actual

saluda()

saluda segun la hora

String util.textRender(String text, Map<String, dynamic> data) {

renderiza un texto

class DataMap: Para manejar Map. #

Definimos una clase como esta

class UserMap extends DataMap {
  
  //  declarando todos los datos que va a tener el objeto
  StringData id = StringData('id');
  StringData nombre = StringData('nombre');
  StringData direccion = StringData('direccion');
  StringData telefono = StringData('telefono');
  NumberData limitecr = NumberData('limitecr');

  UserMap() {
    //  inicializa todos los campos, importante que todos los campos especificados esten en la lista
    bind(members: [id, nombre, telefono, direccion, limitecr]);
  }
}

o tambien puede definirla de esta forma

class UserMap extends DataMap {
  
  //  declarando todos los datos que va a tener el objeto
  var id = Id();
  var nombre = Nombre();
  var direccion = Direccion();
  var telefono = Telefono();
  var limitecr = NumberData('limitecr');

  UserMap() {
    //  inicializa todos los campos, importante que todos los campos especificados esten en la lista
    bind(members: [id, nombre, telefono, direccion, limitecr]);
  }
}

revise el archivo types.dart para ver varios tipos de datos predefinidos

#

y estas son algunas maneras de implementarla

  //  instanciando la clase
  var user = UserMap();

  print('valor inicial -> ${user.nombre.value}');

  //  puede asignar valor a las propiedades
  user.nombre.value = 'usuario Test';
  print('valor modificado -> ${user.nombre.value}');

  //  puede deshacer el cambio realizado
  user.nombre.undo();
  print('desecho los cambios -> ${user.nombre.value}');

  //  puede asignar un valor como original del dato
  user.nombre.reset('sin nombre');
  print('valor reseteado -> ${user.nombre.value}');

  user.nombre.value = 'usuario prueba';
  print('valor modificado -> ${user.nombre.value}');

  user.nombre.undo();
  print('desecho los cambios -> ${user.nombre.value}');

  //  se puede hacer aplicar un cambio mediante un json con los valores
  user.set({'id': '001', 'nombre': 'nombre asignado via json via contenedor'});
  print(user.get());

  //  se puede deshacer los cambios de manera global
  user.undo();
  print(user.get());

  //  se puede definir el valor original mediante en json con valores
  user.reset({'id': '001', 'nombre': 'nombre original definido via json via contenedor'});
  print(user.get());

  user.set({'id': '001', 'nombre': 'nombre asignado via json via contenedor'});
  print(user.get());

  user.undo();
  print(user.get());
    

Evento Changed

  //  instanciando la clase
  var user = UserMap();

  user.on('changed', (x) {
    var r = {};
    user.changes(r);
    print('se esta modificando cualquier propiedad del objeto ' + jsonEncode(r));
  });

  await user.direccion.set('santo domiiiiingo... hay que lindo!!!');

  //  hay disparadores (ASINCRONOS) para cuando se efectuan cambios
  user.nombre.on('changed', (x) async {
    await user.nombre.set(user.nombre.value.toUpperCase());
  });

  //  si desea que el efecto del trigger sea SINCRONO en su codigo haga esto
  await user.nombre.set('probando evento changed(sincrono) debe imprimir en mayuscula');
  print(user.nombre.value);

  user.nombre.set('probando evento changed(asincrono) debe imprimir en minuscula');
  print(user.nombre.value);


IMPORTANTE

Siempre use await para usar el metodo set para modificar el contenido de un atributo o si desea modificar todo el contenido con un Map

class DataList: Para manejar List. #

Definimos una clase como esta

class UserList extends DataList<UserMap> {
  UserList() : super('users');

  @override
  UserMap create() => UserMap();
}

luego lo podemos implementar asi

  var users = UserList();
  //  configurando evento changed
  users.on('changed', (x) {
    print('evento changed funcionando!!, esto viene en x:  ${x}');
  });

  //  asignando valores originales
  users.reset([
    {'id': '000', 'nombre': 'nombre reseteado'}
  ]);

  //  agregando list
  await users.addList([
    {'id': '001', 'nombre': 'agregado de un List 1'},
    {'id': '002', 'nombre': 'agregado de un List 2'}
  ]);

  //  agregando map
  await users.addMap({'id': '003', 'nombre': 'agregado de un Map'});

  //  actualizando via indice
  await users[2].nombre.set(users[2].nombre.value + ', modificado via indice');

  //  actualizando via first
  await users.first.nombre.set(users.first.nombre.value + ', modificado first');

  //  imprimiendo contenido
  users.forEach((e) {
    print(e.get());
  });

  //  imprimiendo cambios
  var changes = {};
  if (users.changes(changes)) {
    print('LO MODIFICADO =====================');
    changes['users'].forEach((e) {
      print(e);
    });
  }

IMPORTANTE

Siempre use await para usar los metodos set, addMap, addList.

0
likes
0
points
31
downloads

Publisher

unverified uploader

Weekly Downloads

Librerias comunes a proyecto chalona

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

intl, uuid

More

Packages that depend on chalona_api