chalona_api 0.0.7 copy "chalona_api: ^0.0.7" to clipboard
chalona_api: ^0.0.7 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> {
  //  haciendo que opcionalmente la clase reciba el nombre con el que se va
  //  a manejar la instancia
  UserList([String? name]) : super(name ?? '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.

Convinar DataMap y DataList

Definimos una clase como esta

class Tarea extends DataMap {
  //  para tipos predefinidos consultar types.dart
  var descripcion = Descrip(name: 'descripcion');

  //  el nombre en la lista es vital
  var encargados = UserList('encargados');

  Tarea() {
    //  notar que la propiedad encargados esta tambien incluida
    bind(members: [descripcion, encargados]);
  }
}

y la podemos implementar asi

 var tarea = Tarea();
  tarea.reset({
    'descripcion': 'ir a dar un paseo',
    'encargados': [
      {'id': '001', 'nombre': 'juan'},
      {'id': '002', 'nombre': 'marcos'}
    ]
  });
  print(tarea.get());

  //  inicializa el recurso que va a consultar el sistema
  var http = Http(url: 'https://servidor_api', key: 'clave_de_encriptacion');

  //  adjunta el recurso a app
  app.addHost(host: http);

  //  realiza el login
  await app.login(user: 'usuario', pass: 'clave');
  print(app.session.isLogged);
  print(app.session.get());

  //  restarura la session
  await app.sessionRestore();
  print(app.session.get());

  //  cierra la session
  await app.sessionRelease();
  print(app.session.get());

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

flutter, http, intl, jaguar_jwt, shared_preferences, tiny_storage, uuid

More

Packages that depend on chalona_api