Flutter: реализация «смахивания» в приложении.
Задача: реализовать удаление позиции из списка «смахиванием».
Решение: используем для этого виджет Dismissible. Обернем в него каждый пункт в ListView. Ну собственно в него можно оборачивать любой виджет.
child: ListView.builder(
....
...
child:
Dismissible(
key: UniqueKey(),
direction:DismissDirection.startToEnd,
onDismissed: (DismissDirection direction){
TDialogs dia = TDialogs();
dia.SureDialog(context, "Подтверждение", "Вы действительно удалить ТМЦ "+globals.TMCList[index]["inv_num"]+" ?",
(){
setState(() {
globals.TMCList.removeAt(index);
});
},
(){
setState(() {});
}
);
},
child: Container(
padding: EdgeInsets.symmetric(vertical: 10),
color: globals.TMCList[index]["count"]==0?Colors.red:null,
child: Column(
children: [
Text(
globals.TMCList[index]["name"],
textAlign: TextAlign.start,
),
Align(
....
Из интересного: метод direction отвечает за то, как именно разрешено «смахивать». В примере это «от старта до конца». Т.е. слева на право. Доступные варианты:
enum DismissDirection {
vertical,
horizontal,
endToStart,
startToEnd,
up,
down,
none
}
