[英]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.