joaopaulofcc

resppessoasdb

Nov 17th, 2020 (edited)
1,048
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import 'dart:async';
  2. import 'package:flutter/widgets.dart';
  3. import 'package:path/path.dart';
  4. import 'package:sqflite/sqflite.dart';
  5.  
  6. class Pessoa {
  7.   final int id;
  8.   final String nome;
  9.   final int idade;
  10.   final String endereco;
  11.  
  12.   Pessoa({this.id, this.nome, this.idade, this.endereco});
  13.  
  14.   Map<String, dynamic> toMap() {
  15.     return {
  16.       'id': id,
  17.       'nome': nome,
  18.       'idade': idade,
  19.       'endereco': endereco,
  20.     };
  21.   }
  22.  
  23.   @override
  24.   String toString() {
  25.     return 'Pessoa{id: $id, name: $nome, idade: $idade, endereco: $endereco }';
  26.   }
  27. }
  28.  
  29. void main() async {
  30.   WidgetsFlutterBinding.ensureInitialized();
  31.  
  32.   final Future<Database> database = openDatabase(
  33.     join(await getDatabasesPath(), 'pessoas_database.db'),
  34.     onCreate: (db, version) {
  35.       return db.execute(
  36.         "CREATE TABLE pessoa(id INTEGER PRIMARY KEY, nome TEXT, idade INTEGER, endereco TEXT)",
  37.       );
  38.     },
  39.     version: 1,
  40.   );
  41.  
  42.   Future<void> insertPessoa(Pessoa pessoa) async {
  43.     final Database db = await database;
  44.  
  45.     await db.insert(
  46.       'pessoa',
  47.       pessoa.toMap(),
  48.       conflictAlgorithm: ConflictAlgorithm.replace,
  49.     );
  50.   }
  51.  
  52.   Future<List<Pessoa>> pessoa() async {
  53.     final Database db = await database;
  54.  
  55.     final List<Map<String, dynamic>> maps = await db.query('pessoa');
  56.  
  57.     return List.generate(maps.length, (i) {
  58.       return Pessoa(
  59.           id: maps[i]['id'],
  60.           nome: maps[i]['nome'],
  61.           idade: maps[i]['idade'],
  62.           endereco: maps[i]['endereco']);
  63.     });
  64.   }
  65.  
  66.   Future<void> updatePessoa(Pessoa pessoa) async {
  67.     final db = await database;
  68.  
  69.     await db.update(
  70.       'pessoa',
  71.       pessoa.toMap(),
  72.       where: "id = ?",
  73.       whereArgs: [pessoa.id],
  74.     );
  75.   }
  76.  
  77.   Future<void> deletePessoa(int id) async {
  78.     final db = await database;
  79.  
  80.     await db.delete(
  81.       'pessoa',
  82.       where: "id = ?",
  83.       whereArgs: [id],
  84.     );
  85.   }
  86.  
  87.   // Cria dois objetos da classe Pessoa para teste.
  88.   var pessoa1 = Pessoa(
  89.       id: 0,
  90.       nome: 'João Paulo',
  91.       idade: 75,
  92.       endereco: 'Rua dos Chewbaccas, 737 - Vila dos C3POs');
  93.  
  94.   var pessoa2 = Pessoa(
  95.       id: 1,
  96.       nome: 'Maria Antônia',
  97.       idade: 34,
  98.       endereco: 'Av. Hobbit de Oliveira, 13, Centro');
  99.  
  100.   // Insere os dois objetos no banco.
  101.   await insertPessoa(pessoa1);
  102.   await insertPessoa(pessoa2);
  103.  
  104.   // Imprime todas as pessoas cadastradas no banco.
  105.   print(await pessoa());
  106.  
  107.   // Solicita a remoção do objeto pessoa1 do banco.  
  108.   await deletePessoa(pessoa1.id);
  109.  
  110.   // Altera dados do objeto pessoa2.
  111.   pessoa2 = Pessoa(
  112.     id: pessoa2.id,
  113.     nome: pessoa2.nome,
  114.     idade: pessoa2.idade,
  115.     endereco: 'Av. Hobbit de Oliveira, 130, Centro',
  116.   );
  117.   // Atualiza dados no banco.
  118.   await updatePessoa(pessoa2);
  119.   // Imprime todas as pessoas cadastradas no banco.
  120.   print(await pessoa());
  121. }
  122.  
RAW Paste Data