如何将“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()”类型的参数?的主要内容,如果未能解决你的问题,请参考以下文章
Python - GUI复选框无法将带有参数的函数分配给变量