Inicio » Cursos » Flutter y Laravel App de Turismo

Implementación de un DBmanager | Curso Flutter y Laravel App de Turismo

Vamos a crear una base de datos SQLite para ello instanciamos el paquete sqflite, path_provider y otros necesarios, también crearemos los métodos CRUD

Lección 22: Implementación de un DBmanager

En esta lección vamos a crear el kernel o punto central para almacenar, extraer, modificar datos mediante la creaciòn de una base de datos Sqlite.  Además de implementar los métodos necesarios para gestionar nuestrar tablas a tráves de la representación de nuestros modelos.

declaramos un nuevo archivo con el nombre DBmanager

lib/basededatos/DBmanager.dart

import 'package:app/basededatos/Empresa.dart';
import 'package:app/basededatos/Foto.dart';
import 'package:app/basededatos/Lugar.dart';
import 'package:app/basededatos/Ruta.dart';
import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart';
import 'dart:io' as io;
import 'package:sqflite/sqflite.dart';

class DBmanager{
  // BASE
  static Database _bd;
  Future<Database> get bd async{
    if(_bd!= null)
      return _bd;
    _bd = await initDb();
    return _bd;
  }
  initDb() async {
    io.Directory d = await getApplicationDocumentsDirectory();
    String path = join(d.path,"bdturismo.db");
    var base = await openDatabase(path, version: 1, onCreate: _onCreate);
    return base;
  }

  void _onCreate(Database db,int version) async {
    await db.execute("CREATE TABLE ruta(id INTEGER, nombre TEXT, urlfoto TEXT)");
    await db.execute("CREATE TABLE empresa(id INTEGER, razonsocial TEXT, descripcion TEXT, urllogo TEXT, ruta_id INTEGER, user_id INTEGER)");
    await db.execute("CREATE TABLE lugar(id INTEGER, nombre TEXT, descripcion TEXT, urlfoto TEXT, latitud TEXT, longitud TEXT, ruta_id INTEGER)");
    await db.execute("CREATE TABLE foto(id INTEGER, nombre TEXT, urlfoto TEXT, tipo INTEGER, lugar_id INTEGER)");
  }
// métodos
// rutas
  Future<int> insertarRuta(Ruta modelo) async {
    var basededatos = await bd;
    int respuesta = await basededatos.insert("ruta", modelo.toMap());
    return respuesta;
  }
  Future<List<Ruta>> obtenerRutas(String condicion) async{
    var basededatos = await bd;
    List<Map> lista = await basededatos.rawQuery("SELECT * FROM ruta WHERE "+ condicion);
    List<Ruta> rutas = new List();
    for(int i=0; i<lista.length;i++){
      rutas.add(new Ruta(lista[i]['id'], lista[i]['nombre'], lista[i]['urlfoto']));
    }
    return rutas;
  }
// EMPRESA
  Future<int> insertarEmpresa(Empresa empresa) async {
    var basedetados = await bd;
    int respuesta = await basedetados.insert("empresa", empresa.toMap());
    return respuesta;
  }
  Future<List<Empresa>> obtenerEmpresas(String condicion) async {
    var basededatos = await bd;
    List<Map> lista = await basededatos.rawQuery("SELECT * FROM empresa WHERE "+condicion);
    List<Empresa> empresas = new List();
    for(int i=0; i<lista.length; i++){
      empresas.add(new Empresa(
        lista[i]['id'],
        lista[i]['razonsocial'],
        lista[i]['descripcion'],
        lista[i]['urllogo'],
        lista[i]['ruta_id'],
        lista[i]['user_id'],
      ));
    }
    return empresas;
  }
  // LUGAR
  Future<int> insertarLugar(Lugar lugar) async {
    var base = await bd;
    int respuesta = await base.insert("lugar", lugar.toMap());
    return respuesta;
  }
  Future<List<Lugar>> obtenerLugares(String condicion) async {
    var base = await bd;
    List<Map> lista = await base.rawQuery("SELECT * FROM lugar WHERE "+condicion);
    List<Lugar> lugares = new List();
    for(int i=0; i<lista.length; i++){
      lugares.add(new Lugar(
          lista[i]['id'],
          lista[i]['nombre'],
          lista[i]['descripcion'],
          lista[i]['urlfoto'],
          lista[i]['latitud'],
          lista[i]['longitud'],
          lista[i]['ruta_id']
      ));
    }
    return lugares;
  }
  // FOTOS
  Future<int> insertarFoto(Foto foto) async {
    var base = await bd;
    int respuesta = await base.insert("foto", foto.toMap());
    return respuesta;
  }
  Future<List<Foto>> obtenerFotos(String condicion) async {
    var base = await bd;
    List<Map> lista = await base.rawQuery("SELECT * FROM foto WHERE "+condicion);
    List<Foto> fotos = new List();
    for(int i=0; i<lista.length; i++){
      fotos.add(new Foto(
          lista[i]['id'],
          lista[i]['nombre'],
          lista[i]['urlfoto'],
          lista[i]['tipo'],
          lista[i]['lugar_id']
      ));
    }
    return fotos;
  }

  // delete
  Future<int> borrarTabla(String tabla) async{
    var base = await bd;
    return await base.rawDelete("DELETE FROM "+tabla);
  }

}

Esta claro que debemos realizar los import necesarios o mejor dicho los paquetes necesarios en el archivo de configuración .yaml de Flutter

  • Sqflite
  • Path_provider 
  • y otros, etc.

 

 

 

 

 


868 visitas

Más cursos que pueden interesarte

Más cursos

Codea Codea App

México, Colombia, España, Venezuela, Argentina, Bolivia, Perú

© Todos los derechos reservados Codea App | ...de frente al código!!! | 2020 - 2023