【问题标题】:Can we pass parameters to reference methods in dart?我们可以将参数传递给 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;
     });
   }

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

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我按照你说的做了,然后在构建过程中调用了错误 setState() 或 markNeedBuild()。错误
    • 这可能与TaskTile 实现有关,请检查您的代码中是否有类似内容:stackoverflow.com/a/47592505/1006555
    猜你喜欢
    • 2015-10-26
    • 2010-12-13
    • 2023-04-01
    • 1970-01-01
    • 2015-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多