我们可以将参数传递给 dart 中的引用方法吗?

Posted

技术标签:

【中文标题】我们可以将参数传递给 dart 中的引用方法吗?【英文标题】:Can we pass parameters to reference methods in dart? 【发布时间】:2020-10-27 05:48:50 【问题描述】:

伙计们,我正在尝试访问方法内的变量,我必须将此变量传递给引用方法。这可能吗?

这是我的列表生成器

return ListView.builder(
      itemCount: tasks.length,
      itemBuilder: (context, index) 
        return TaskTile(
          nameOfTheTask: tasks[index].nameOfTheTask,
          isChecked: tasks[index].taskStatus,
          onTaskCompleted: (checkBoxState)         
            setState(() 
              tasks[index].updateTaskStatus();
            );
          , 
        );
      ,
    );

我想将 onTaskCompleted 附近的回调替换为引用方法。

onTaskChangedReference(checkBoxState) 
     setState(() 
       tasks[index].taskStatus =
           !tasks[indexOfTheTaskTile].taskStatus;
     );
   

但是我需要使用索引变量,有什么办法可以做到这一点。

【问题讨论】:

【参考方案1】:

一种方法是创建这样的方法:

onTaskChangedReference(int index) 
  return (checkBoxState) 
     setState(() 
       tasks[index].taskStatus =
           !tasks[indexOfTheTaskTile].taskStatus;
     );
   

所以现在在您的ListView.builder 中,您可以像这样引用它:

...
onTaskCompleted: onTaskChangedReference(index),
...

【讨论】:

我按照你说的做了,然后在构建过程中调用了错误 setState() 或 markNeedBuild()。错误 这可能与TaskTile 实现有关,请检查您的代码中是否有类似内容:***.com/a/47592505/1006555

以上是关于我们可以将参数传递给 dart 中的引用方法吗?的主要内容,如果未能解决你的问题,请参考以下文章

我可以将类引用作为参数传递给 VB Net 中的函数吗?

我们可以将多个参数传递给控制器​​中的函数吗?

我可以将数组和变量作为参数传递给 C# 中的方法吗? [复制]

您可以将子类作为参数传递给具有超类参数的函数吗? C++

如何将参数传递给 Apache Apex 中的 application.java 类?

Flutter/Dart:将参数传递给有状态的小部件?