Как добиться смахивания вправо или влево во флаттере - PullRequest
0 голосов
/ 30 сентября 2019

Я делаю приложение со списком задач. Я хочу добиться, проведя пальцем вправо, чтобы удалить, и проведя пальцем влево, чтобы пометить так же, как какое-либо почтовое приложение.

Я знаю, Разрушаемый виджет может достичь удара, чтобы удалить, а SecondaryBackground может сделать другой способ, чтобы провести. Но яНе, как вызвать другую функцию, когда я проведу по другому пути.

return Dismissible(
          // Each Dismissible must contain a Key. Keys allow Flutter to
          // uniquely identify widgets.
          key: Key(item),
          // Provide a function that tells the app
          // what to do after an item has been swiped away.
          onDismissed: (direction) {
            // Remove the item from the data source.
            setState(() {
              items.removeAt(index);
            });
            // Then show a snackbar.
            Scaffold.of(context)
                .showSnackBar(SnackBar(content: Text("$item dismissed")));
          },
          // Show a red background as the item is swiped away.
          background: Container(color: Colors.red,child: Icon(Icons.cancel),),
          secondaryBackground: Container(color: Colors.green,child: Icon(Icons.check),),
          child: ListTile(title: Text('$item')),
        );

1 Ответ

2 голосов
/ 30 сентября 2019

Чтобы определить, в каком направлении вы провели

onDismissed: (direction) {

   if(direction == DismissDirection.startToEnd) { // Right Swipe

        setState(() {
          items.removeAt(index);
        });

        Scaffold.of(context).showSnackBar(SnackBar(content: Text("$item dismissed")));

   } else if(direction == DismissDirection.endToStart) {//Left Swipe
        //add event to Calendar 
   }
 },
...