Я новый Flutter, так что извиняюсь за свои ошибки. Я хочу удалить выбранный мной элемент списка, но не могу. Я инициализирую базу данных таким образом в главном дротике:
Database db;
Future createDatabase() async {
db = await openDatabase(
"listoftasks.db",
version: 1,
onCreate: (Database db, int version) {
db.execute(
"CREATE TABLE Tasks (id INTEGER PRIMARY KEY, name TEXT)");
print("creating");
},
onOpen: (Database db) {
print("opened existing database");
},
);
}
@override
void initState() {
createDatabase();
super.initState();
}
, и я перешел на MainPage следующим образом:
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomPadding: false,
backgroundColor: const Color(0xfff9fcff),
body: db == null ? Container() : MainPage(db),
);
}
}
, и здесь находится MainPage, я описал получение базы данных и рендеринг на страницу.
List<Task> existingTasks = [];
getTasks() async {
existingTasks = [];
List<Map> tasksQuery =
await widget.db.rawQuery(
"SELECT * FROM Tasks");
for (var i in tasksQuery) {
String name = i["name"];
id = i["id"];
Task newTask = Task(id: id, title: name);
setState(() {
existingTasks.add(newTask);
});
}
}
@override
void initState() {
getTasks();
super.initState();
}
@override
Widget build(BuildContext context) {
return Material(
color: Color(0xffF9FCFF),
child:
TaskPage(
tasks: existingTasks,
db: widget.db,
getTasks: getTasks,
id: id);
Моя проблема здесь, я вытаскиваю db и id для удаления на TaskPage, но у меня есть ошибка. Идентификатор является целым числом, и я написал целое число в кодах sql для удаления, но ошибка отображается. Я не понимаю почему. Я сожалею об этом. Пожалуйста, помогите мне . Кнопка удаления и TaskPage:
IconButton(
color: Colors.red,
iconSize: 25,
icon: Icon(Icons.delete),
onPressed: () {
widget.db.rawDelete(
"DELETE FROM Tasks WHERE id = $widget.id ");
//i am pulling id as selected value from MainPage but It doesn't work.
print(widget.id);
widget.getTasks();
}),
Ошибка:
E / SQLiteLog (3683): (1) нет такого столбца: TaskPage.id E / flutter (3683): [ОШИБКА: flutter / lib / ui / ui_dart_state. cc (166) ] Необработанное исключение: DatabaseException (такого столбца нет: TaskPage.id (код 1): при компиляции: УДАЛИТЬ ИЗ gorevler WHERE id = TaskPage.id) sql 'УДАЛИТЬ ИЗ gorevler WHERE id = TaskPage.id' args []}
Разве он не извлекал идентификатор из MainPage? Я не могу понять ошибку.