【问题标题】:How to disable click events for entire children except one selected child in flutter?如何禁用除了一个选定的孩子之外的整个孩子的点击事件?
【发布时间】:2020-07-13 13:18:11
【问题描述】:

场景:我在 Listview.builder 中有多个孩子。每个孩子都有一个按钮可以调用 TTS(文本到语音)。我希望当任何一个孩子被按下时,所有孩子都应该在 Listview.builder 中不可点击,直到按下的孩子完成其 TTS。

我得到了谷歌的回答,比如吸收指针,忽略指针来解决这个问题。 但我不知道如何使用这些小部件实现上述场景。

【问题讨论】:

    标签: flutter dart flutter-layout


    【解决方案1】:

    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
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-23
      • 2011-12-08
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      相关资源
      最近更新 更多