【问题标题】:How can I assign an argument of type 'Function' to a parameter of type 'void Function()'?如何将“Function”类型的参数分配给“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()?'”。我该如何解决?

【问题讨论】:

标签: flutter dart


【解决方案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: ()=>下一个问题,

      【讨论】:

        猜你喜欢
        • 2023-04-05
        • 1970-01-01
        • 2021-10-22
        • 2022-01-17
        • 2021-08-11
        • 1970-01-01
        • 1970-01-01
        • 2021-09-01
        • 2021-11-06
        相关资源
        最近更新 更多