如何将“Function”类型的参数分配给“void Function()”类型的参数?

Posted

技术标签:

【中文标题】如何将“Function”类型的参数分配给“void Function()”类型的参数?【英文标题】:How can I assign an argument of type 'Function' to a parameter of type 'void Function()'? 【发布时间】:2021-09-09 15:03:43 【问题描述】:

我正在尝试创建一个这样的无状态小部件:

import 'package:flutter/material.dart';

class Answers extends StatelessWidget 
  final Function nextQuestion;

  Answers(this.nextQuestion);

  @override
  Widget build(BuildContext context) 
    return ElevatedButton(
      onPressed: nextQuestion,
      child: Text("Answer"),    
    );
  

但是,onPressed 参数中出现错误:“参数类型 'Function' 不能分配给参数类型 'void Function()?'”。我该如何解决?

【问题讨论】:

这能回答你的问题吗? error: The argument type 'Future' can't be assigned to the parameter type 'void Function()' 【参考方案1】:

只需将nextQuestion的类型改为void Function()即可:

final void Function() nextQuestion;

【讨论】:

【参考方案2】:

变化

  final Function nextQuestion;

final VoidCallback nextQuestion;

这解决了我的问题。

【讨论】:

【参考方案3】:

将 nextQuestion 的类型更改为 VoidCallback,如果您有一个不返回不带参数的数据的函数,则可以使用该类型。 将数据类型从 Function 更改为 VoidCallback。

final VoidCallback nextQuestion;

       or you can put anonymous function in front of onPressed ()

onPressed: ()=>下一个问题,

【讨论】:

以上是关于如何将“Function”类型的参数分配给“void Function()”类型的参数?的主要内容,如果未能解决你的问题,请参考以下文章

将函数分配给R中的变量

Python 命令行参数分配给变量

Python - GUI复选框无法将带有参数的函数分配给变量

为啥我应该将函数分配给 javascript 中的变量? [复制]

将JavaScript函数分配给变量的效果[重复]

将多组参数分配给 jQuery 函数