У меня есть приложение, которое добавляет виджет Card
, когда пользователь нажимает FAB. Существует список типа Card
, который отображается в SliverGrid
, в котором хранится Card
, добавленный пользователем. Я хотел реализовать функцию удаления, но когда я попытался это сделать, я получаю сообщение об ошибке «Невозможно использовать локальную переменную до ее объявления». Card
добавляется в список с помощью этого кода:
int _count = 0;
cardList = List.generate(_count, (int i) =>
new Card(
child: ListTile(
title: Text("project 1"),
trailing: new Listener(
key: new Key(UniqueKey().toString()),
child: new Icon(Icons.remove_circle,
color: Colors.redAccent,),
onPointerDown: (pointerEvent) {}
// deleteNoDo(), //this is the delete function
),
),
)
);
Card
генерируется с использованием этого кода (эта кнопка определена под Scaffold
):
floatingActionButton: FloatingActionButton(
onPressed: () async {
setState(() {
_count += 1;
});
},
heroTag: "btn2",
child: Icon(Icons.add, color: Color(whitecolor),), // this is just a custom color
backgroundColor: Color(redcolor),), // this is just a custom color
это функция удаления:
deleteNoDo(int index) {
debugPrint("Deleted Item!");
setState(() {
cardList.removeAt(index);
});
}
это SliverGrid
, где отображается cardList
:
SliverGrid(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2
),
delegate: new SliverChildBuilderDelegate((context,index) {
return cardList[index]; // this is where the cards are displayed in a list
},
childCount: cardList.length
)
),
вопрос: можно ли устранить ошибку «Невозможно использовать локальную переменную до ее объявления», если я использую базу данных, поскольку функции базы данных (CRUD) асинхронны?