dart 如何在点击时更改列表的子项

xriantvc  于 2023-10-13  发布在  其他
关注(0)|答案(2)|浏览(118)
  1. searchResult = ['john','doe','smith'];
  2. Expanded(
  3. child: Container(
  4. width: ScreenSize.screenWidth,
  5. child: Center(
  6. child:searchResult.isEmpty? Text("Oops! Looks like you have no friends at the moment.") : ListView.builder(itemCount: searchResult.length,itemBuilder: (context , index){
  7. return ListTile(
  8. title: Text(searchResult[index]['username']),
  9. subtitle: Text(searchResult[index]['email']),
  10. trailing: GestureDetector(
  11. onTap: () {
  12. },
  13. child: Icon(Icons.add_circle_outline)),
  14. );
  15. })
  16. ),
  17. ),
  18. ),

在上面的代码中,我想在onTap中执行一个功能,当点击该功能时,将该特定列表的图标Only更改为Icon(Icons.done)。
我试着使用setState,但找不到它。

a8jjtwal

a8jjtwal1#

  1. class ListTileCustomWidget extends StatefulWidget {
  2. const ListTileCustomWidget({
  3. required this.email,
  4. required this.userName,
  5. super.key,
  6. });
  7. final String email;
  8. final String userName;
  9. @override
  10. State<ListTileCustomWidget> createState() => _ListTileCustomWidgetState();
  11. }
  12. class _ListTileCustomWidgetState extends State<ListTileCustomWidget> {
  13. bool _isDone = false;
  14. @override
  15. Widget build(BuildContext context) {
  16. return ListTile(
  17. trailing: GestureDetector(
  18. onTap: () {
  19. setState(() {
  20. _isDone = !_isDone;
  21. });
  22. },
  23. child: Icon(_isDone ? Icons.done : Icons.add_circle_outline),
  24. ),
  25. title: Text(widget.email),
  26. subtitle: Text(widget.userName),
  27. );
  28. }
  29. }

现在传递值,

  1. Expanded(
  2. child: Container(
  3. width: ScreenSize.screenWidth,
  4. child: Center(
  5. child:searchResult.isEmpty? Text("Oops! Looks like you have no friends at the moment.") : ListView.builder(
  6. itemCount: searchResult.length,
  7. itemBuilder: (context , index){
  8. return ListTileCustomWidget (
  9. email: searchResult[index]['email'],
  10. userName : searchResult[index]['username']
  11. );
  12. })
  13. ),
  14. ),
  15. ),
展开查看全部
oknwwptz

oknwwptz2#

创建一个状态级变量,

  1. bool isDone = false;

单击按钮时更改变量值,并相应地更改值。

  1. searchResult = ['john','doe','smith'];
  2. Expanded(
  3. child: Container(
  4. width: ScreenSize.screenWidth,
  5. child: Center(
  6. child:searchResult.isEmpty? Text("Oops! Looks like you have no friends at the moment.") : ListView.builder(itemCount: searchResult.length,itemBuilder: (context , index){
  7. return ListTile(
  8. title: Text(searchResult[index]['username']),
  9. subtitle: Text(searchResult[index]['email']),
  10. trailing: GestureDetector(
  11. onTap: () {
  12. setState((){
  13. isDone = true;
  14. })
  15. },
  16. child: Icon(isDone ? Icons.done : Icons.add_circle_outline)),
  17. );
  18. })
  19. ),
  20. ),
  21. ),
展开查看全部

相关问题