【发布时间】:2020-07-13 13:18:11
【问题描述】:
场景:我在 Listview.builder 中有多个孩子。每个孩子都有一个按钮可以调用 TTS(文本到语音)。我希望当任何一个孩子被按下时,所有孩子都应该在 Listview.builder 中不可点击,直到按下的孩子完成其 TTS。
我得到了谷歌的回答,比如吸收指针,忽略指针来解决这个问题。 但我不知道如何使用这些小部件实现上述场景。
【问题讨论】:
标签: flutter dart flutter-layout
场景:我在 Listview.builder 中有多个孩子。每个孩子都有一个按钮可以调用 TTS(文本到语音)。我希望当任何一个孩子被按下时,所有孩子都应该在 Listview.builder 中不可点击,直到按下的孩子完成其 TTS。
我得到了谷歌的回答,比如吸收指针,忽略指针来解决这个问题。 但我不知道如何使用这些小部件实现上述场景。
【问题讨论】:
标签: flutter dart flutter-layout
将bool 存储在包含ListView.builder 的类的State 中。这个bool 应该存储如果其中一个孩子当前正在做它的 TTS。如果是true,则应将所有onPressed(或等效)方法设置为null,以防止其他点击触发动作。例如:
bool hasBeenClicked = false;
void yourTTSMethod() {
setState(() {
hasBeenClicked = true;
});
... //Do normal method body
setState(() {
hasBeenClicked = true;
});
}
//In build method with each `List` item:
GestureDetector(//Just for sample, use whatever click detector you're currently using
onTap: hasBeenClicked ? null : yourTTSMethod
)
【讨论】: