簡體   English   中英

您可以將 onDismissed() 和 onTap() 用於 flutter 中的同一列表嗎?

[英]Can you use onDismissed() and onTap() for the same list in flutter?

我有一個項目列表,我在 flutter 中使用ListView.builder()顯示這些項目。 一旦點擊了一個項目,我希望能夠使用onTap()導航到另一個屏幕,但也可以使用onDismissed()滑動任何項目以將其刪除。 看來我只能返回到構建器ListTile使用onTap()Dismissable使用onDismissed() 有沒有辦法可以在同一個列表中使用這兩個功能?

謝謝。

用作頂部小部件,GestureDetector,然后是 Dismissible,最后是您的 ListTile,如下所示:

  return Scaffold(
  body: ListView.builder(
    itemCount: 10,
    itemBuilder: (context, index) {
      return GestureDetector(
        onTap: () {
          print("Tap item index: $index");
        },
        child: Dismissible(
          onDismissed: (direction) {
            // remove item from list
          },
          background: Container(
            color: Colors.red,
          ),
          key: ObjectKey(index),
          child: ListTile(
            title: Text("Hello"),
          ),
        ),
      );
    },
  ),
);

你應該試試這個技巧

return Container(
      child: movies.length > 0
          ? ListView.builder(
        itemCount: movies.length,
        itemBuilder: (BuildContext context, int index) {
          return InkWell(
            onTap: (){
              Navigator.push(
                context,
                MaterialPageRoute(builder: (context) => MovieDetails()),
              );
            },
            child: Dismissible(

              onDismissed: (DismissDirection direction) {
                setState(() {
                  movies.removeAt(index);
                });
              },
              secondaryBackground: Container(
                child: Center(
                  child: Text(
                    'Delete',
                    style: TextStyle(color: Colors.white),
                  ),
                ),
                color: Colors.red,
              ),
              background: Container(),
              child: MovieCard(movie: movies[index]),
              key: UniqueKey(),
              direction: DismissDirection.endToStart,
            ),
          );
        },
      )
          : Center(child: Text('No Items')),
    )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM