Lección 42: Uso de la API para sincronizar la BD
Para llenar datos desde un servidor web en al Aplicativo debe existir una arquitectura llamada API la cual permite el intercambio de datos aplicaciones
import 'dart:convert';
import 'package:arequipalocal/api/Api.dart';
import 'package:arequipalocal/basededatos/Bd.dart';
import 'package:arequipalocal/modelo/Categoria.dart';
import 'package:arequipalocal/modelo/Producto.dart';
import 'package:arequipalocal/modelo/Subcategoria.dart';
import 'package:arequipalocal/pantalla/PantallaCarrito.dart';
import 'package:arequipalocal/pantalla/PantallaInicio.dart';
import 'package:arequipalocal/pantalla/PantallaProductos.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import 'package:shared_preferences/shared_preferences.dart';
import 'package:provider/provider.dart';
class PantallaCategoria extends StatefulWidget {
@override
_PantallaCategoriaState createState() => _PantallaCategoriaState();
}
var BD = DBHelper();
class _PantallaCategoriaState extends State<PantallaCategoria> {
final GlobalKey<ScaffoldState> _globalKey = new GlobalKey<ScaffoldState>();
Future<List<Categoria>> _getData() async{
var respuesta = await http.get(
Uri.encodeFull("http://arequipalocal.com/api/enviarproductos"),
headers: { 'Accept' : 'application/json'}
);
setState(() {
var data = json.decode(respuesta.body);
//print(data.toString());
if(data!= null){
// llenar categorias
var _categorias = data['categorias'];
BD.deleteTable("categoria", "1");
for(int i=0; i<_categorias.length;i++){
var registro = Categoria(
_categorias[i]['id'],
_categorias[i]['nombre'],
_categorias[i]['urlfoto']
);
//print(registro.toString());
BD.saveCategoria(registro);
}
// llenar subcategorias
var _subcategorias = data['subcategorias'];
BD.deleteTable("subcategoria", "1");
for(int i=0; i<_subcategorias.length;i++){
var registro = Subcategoria(
_subcategorias[i]['id'],
_subcategorias[i]['nombre'],
_subcategorias[i]['urlfoto'],
_subcategorias[i]['categorias_id'],
);
BD.saveSubcategoria(registro);
}
// llenar productos
var _productos = data['productos'];
BD.deleteTable("producto", "1");
for(int i=0; i<_productos.length;i++){
var registro = Producto(
_productos[i]['id'],
_productos[i]['nombre'],
_productos[i]['descripcion'],
double.parse(_productos[i]['precio']),
_productos[i]['urlfoto'],
_productos[i]['unidad'],
_productos[i]['subcategorias_id'],
);
BD.saveProducto(registro);
}
print("ok");
}
else{
print("Error");
}
});
}
@override
void initState() {
// TODO: implement initState
_getData();
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold()
}
}
1653 visitas