如何在回调中获取实例

Posted

技术标签:

【中文标题】如何在回调中获取实例【英文标题】:How to get to instance in callback 【发布时间】:2019-07-18 22:50:13 【问题描述】:

我正在尝试在抽屉中的 ListTile 列表中切换选择?

    ListTile(
      title: Text("Name"),
      leading: Icon(Icons.dashboard),
      onTap: () 
        currentSelected.selected = false
        this.selected = true;
        currentSelected = this; // << How to get the instance of ListTile
      ,
    ),

【问题讨论】:

【参考方案1】:

this 指向包含问题中代码的小部件。 您可以在分配ListTile 的位置创建一个变量,然后可以在onTap 中引用它。

ListTile listTile;
listTile = ListTile(
      title: Text("Name"),
      leading: Icon(Icons.dashboard),
      onTap: () 
        currentSelected.selected = false
        this.selected = true;
        currentSelected = listTile
      ,
    ),
return listTile;

最好使用一个值来存储所选项目,例如 itemId,而不是小部件引用。

【讨论】:

如果使用 itemId,您会保留对带有 itemId 的自定义 ListTile 列表的引用 - 还是使用 Key? 我需要更多的上下文来完全理解你想要完成的事情。我认为您根本不需要对小部件的引用。 谢谢,我只是想让选中的 ListTile 在选中时脱颖而出。我觉得已经有一个解决方案,因为这是一个常见的场景。有人这样做了,但仍然:***.com/questions/49331612/… 我想我应该 setState 并重建,如果它只是 ListTile 的重建就好了 是的,如果你想更新UI,你需要setState()

以上是关于如何在回调中获取实例的主要内容,如果未能解决你的问题,请参考以下文章

java 父类如何在运行期动态获取子类类名

了解快速排序算法如何在 VBA 中重现

方法如何在 Ruby 中使用哈希参数?

RDD take()方法如何在内部工作?

如何从回调操作的结果中获取类型?

如何在没有任何 vue 库的情况下在 vue 回调中获取 http 响应标头(axios)