Skip to content

Instantly share code, notes, and snippets.

@tiagolpadua
Created August 25, 2020 20:13
Show Gist options
  • Save tiagolpadua/05d526bcefd0b1763c8e4b22fadb657d to your computer and use it in GitHub Desktop.
Save tiagolpadua/05d526bcefd0b1763c8e4b22fadb657d to your computer and use it in GitHub Desktop.
async await
import 'package:bytebank/models/contact.dart';
import 'package:flutter/material.dart';
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';
// Estamos no 10.5 EXERCÍCIO: REFATORANDO PARA ASYNC AWAIT
// 1 - Converter getDatabase para async
Future<Database> getDatabase() async {
final String dbPath = await getDatabasesPath();
final String path = join(dbPath, 'bytebank.db');
return openDatabase(
path,
onCreate: (db, version) {
db.execute('CREATE TABLE contacts('
'id INTEGER PRIMARY KEY, '
'name TEXT, '
'account_number INTEGER)');
debugPrint('DB Criado com sucesso!');
},
version: 1,
onDowngrade: onDatabaseDowngradeDelete,
);
}
// 2 - Converter save para async
Future<int> save(Contact contact) async {
final Database db = await getDatabase();
final Map<String, dynamic> contactMap = Map();
contactMap['name'] = contact.name;
contactMap['account_number'] = contact.accountNumber;
return db.insert('contacts', contactMap);
}
// 3 - Converter findAll para async
Future<List<Contact>> findAll() async {
final Database db = await getDatabase();
final List<Map<String, dynamic>> maps = await db.query('contacts');
final List<Contact> contacts = List();
for (Map<String, dynamic> map in maps) {
final Contact contact = Contact(
map['id'],
map['name'],
map['account_number'],
);
contacts.add(contact);
}
return contacts;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment