Flutter: реализация «смахивания» в приложении.
Задача: реализовать удаление позиции из списка «смахиванием».
Решение: используем для этого виджет Dismissible. Обернем в него каждый пункт в ListView. Ну собственно в него можно оборачивать любой виджет.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
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 отвечает за то, как именно разрешено «смахивать». В примере это «от старта до конца». Т.е. слева на право. Доступные варианты:
1 2 3 4 5 6 7 8 9 10 |
enum DismissDirection { vertical, horizontal, endToStart, startToEnd, up, down, none } |