listview - ListView onTap 回调不起作用 Flutter
问题描述
我有一个WeekdayCell
用于构建 ListView 的小部件。所有使文本更改颜色时的逻辑在选定调用widget的ontap时可以预期的,但是 从listViewonTap:
的onTapCancel:
回调不会执行,因为我在点击单元格时不会在控制台中获得任何打印。你能看出我做错了什么吗?
一如既往地感谢您的时间和帮助。
小部件:
class WeedayCell extends StatefulWidget {
String day;
bool isSelected;
Function onTap;
Function onTapCancel;
WeedayCell(
{@required this.day,
@required this.isSelected,
@required this.onTap,
@required this.onTapCancel});
@override
List<Object> get props => [day, isSelected];
@override
_WeedayCellState createState() => new _WeedayCellState();
}
class _WeedayCellState extends State<WeedayCell> {
@override
Widget build(BuildContext context) {
return Container(
child: new Column(
children: [
new ListTile(
selected: widget.isSelected,
title: Text(
'${widget.day}',
style: TextStyle(
color: widget.isSelected == false
? Colors.black
: Colors.redAccent,
fontSize: 20,
fontWeight: FontWeight.w500),
),
onTap: () {
setState(() {
widget.isSelected == false ? widget.onTap : widget.onTapCancel;
widget.isSelected = !widget.isSelected;
});
},
)
],
),
);
}
}
列表显示:
body: Container(
padding: EdgeInsets.all(20),
child: ListView.builder(
itemCount: weekdays.length,
itemBuilder: (BuildContext context, int index) => WeedayCell(
day: '${weekdays[index]}',
isSelected: false,
onTap: () {
// repeatWeekdays.add(weekdays[index]);
repeatWeekdays.add(index);
print(repeatWeekdays);
},
onTapCancel: () {
// int indexToRemove = repeatWeekdays.indexOf(weekdays[index]);
// repeatWeekdays.removeAt(indexToRemove);
repeatWeekdays.remove(index);
print(repeatWeekdays);
},
),
),
),
解决方案
你忘了加上括号。widget.onTap和widget.onTapCancel为您提供对该函数的引用。要调用/执行它,您需要编写:
widget.isSelected == false ? widget.onTap() : widget.onTapCancel();
推荐阅读
- c++ - Clang-format:一元运算符前的空格
- javascript - React JS with Material UI - 使用 withStyles 时 this.props 未定义
- pine-script - 差价收盘止损-EMA
- android-studio - 如何在颤动中禁用自动 TODO 评论?
- algorithm - 在迷宫中使用曼哈顿距离的广度优先搜索与 A*
- c - 如何在 C 中的 char 数组中更改位图的一位?
- linux - -bash: dir: command not found - 如何恢复linux的基本命令
- python - TypeError: search_country() 接受 0 个位置参数,但给出了 1 个
- javascript - Javascript回调不能在变量中赋值
- flutter - 从子项弹出时,根小部件未重建