Estou preso no seguinte erro:
D/EGL_emulation(19312): eglMakeCurrent: 0x9d722760: ver 2 0 (tinfo 0x8870b9a0) E/SQLiteLog(19312): (1) table contacts has no column named account_number E/flutter (19312): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: DatabaseException(table contacts has no column named account_number (code 1): , while compiling: INSERT INTO contacts (name, account_number) VALUES (?, ?)) sql 'INSERT INTO contacts (name, account_number) VALUES (?, ?)' args [alex, 1000]}
Achei que era fácil de resolver, pois ele dá a entender que é algum erro na nomenclatura do account_number dentro do db ou do future save. Mas eu fiz tudo certo e inclusive copiei os códigos do commit da aula pro meu AS, mas o erro persiste.
Já dei flutter clean também e não resolveu. Não tenho ideia do que pode ser.
O código funciona normal quando coloco no main só o findAll, retornando pelo debugprint uma lista sem nada ([]). Então creio que o problema esteja no save, mas é só um chute.
Código do app_database.dart
import 'package:bytebank_app/models/contact.dart';
import 'package:path/path.dart';
import 'package:sqflite/sqflite.dart';
Future<Database> createDatabase() {
return getDatabasesPath().then((dbPath) {
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)');
}, version: 1);
});
}
Future<int> save(Contact contact) {
return createDatabase().then((db) {
final Map<String, dynamic> contactMap = Map();
contactMap['name'] = contact.name;
contactMap['account_number'] = contact.accountNumber;
return db.insert('contacts', contactMap);
});
}
Future<List<Contact>> findAll() {
return createDatabase().then((db) {
return db.query('contacts').then((maps) {
final List<Contact> contacts = [];
for (Map<String, dynamic> map in maps) {
final Contact contact = Contact(
map['id'],
map['name'],
map['account_number'],
);
contacts.add(contact);
}
return contacts;
});
});
}
Código main.dart
import 'package:bytebank_app/screens/dashboard.dart';
import 'package:flutter/material.dart';
import 'database/app_database.dart';
import 'models/contact.dart';
void main() {
runApp(BytebankApp());
save(Contact(0, 'alex', 1000)).then((id) {
findAll().then((contacts) => debugPrint(contacts.toString()));
});
}
class BytebankApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
primaryColor: Colors.green[900],
accentColor: Colors.blueAccent[700],
buttonTheme: ButtonThemeData(
buttonColor: Colors.blueAccent[700],
textTheme: ButtonTextTheme.primary,
),
),
home: Dashboard(),
);
}
}