首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

错误:参数类型'Function‘无法分配给参数类型'void Function()?’。‘Function’来自‘dart:core’。.onPressed: selectHandler

这个错误信息表明你在Dart语言中尝试将一个Function类型的对象赋值给一个期望void Function()类型的参数。具体来说,.onPressed属性期望一个无参数且返回类型为void的函数,而你传递的是一个通用的Function类型。

基础概念

  • Function: 在Dart中,Function是一个通用类型,可以表示任何函数。它没有指定参数和返回类型。
  • void Function(): 这是一个具体的函数类型,表示一个没有参数且返回类型为void的函数。

问题原因

错误的原因在于类型不匹配。.onPressed期望的是一个具体的函数类型void Function(),而你传递的是一个更通用的Function类型。

解决方法

你需要确保传递给.onPressed的函数符合void Function()的类型要求。以下是几种解决方法:

方法一:明确函数类型

确保你的函数签名是void Function()

代码语言:txt
复制
void selectHandler() {
  // 处理点击事件的逻辑
}

ElevatedButton(
  onPressed: selectHandler,
  child: Text('Click Me'),
);

方法二:使用匿名函数

如果你不想定义一个单独的函数,可以使用匿名函数。

代码语言:txt
复制
ElevatedButton(
  onPressed: () {
    // 处理点击事件的逻辑
  },
  child: Text('Click Me'),
);

方法三:类型转换(不推荐)

虽然可以通过类型转换来解决,但这种方法不够安全,不推荐使用。

代码语言:txt
复制
Function selectHandler = () {
  // 处理点击事件的逻辑
};

ElevatedButton(
  onPressed: selectHandler as void Function(),
  child: Text('Click Me'),
);

应用场景

这种类型错误常见于Flutter开发中,特别是在使用各种Widget的事件处理属性时,如.onPressed.onChange等。确保传递的函数类型与期望的类型一致是避免这类错误的关键。

通过上述方法,你可以有效地解决这个类型不匹配的问题,并确保代码的正确性和可读性。

相关搜索:错误:参数类型'void Function()?‘不能分配给参数类型'void Function(String?)?‘参数类型'Function?‘不能分配给参数类型'void Function()‘吗?参数类型'void Function()?‘不能分配给参数类型'void Function(String)‘吗?参数类型“void Function(String)”不能分配给参数类型“void Function(String?)?”错误:参数类型'Function‘不能赋值给参数类型'void Function()?’错误:参数类型'void Function(bool)‘不能赋值给参数类型'void Function(bool?)’参数类型“void Function(String)”不能分配给参数类型“void Function(String?)?”在DropdownButton中Flutter :参数类型“void Function(Country)”不能赋值给参数类型“void Function(Country?)?”错误:参数类型'UserModel? Function(User?)‘不能分配给参数类型'UserModel Function(User?)‘如何将'Function‘类型的参数赋值给'void Function()’类型的参数?参数类型“Player Function(Player)”不能分配给参数类型“Player Function(User)”参数类型'Widget Function(Categoria)‘不能分配给参数类型'dynamic Function(Child)’。(模型)颤振Flutter -不能将参数类型“Null”分配给参数类型“Function”参数类型“List<Todolist>?Function(QuerySnapshot<Object?>)”不能分配给参数类型“List<Todolist>Function(QuerySnapshot<Object?>)”错误:不能将参数类型'Null Function(int)‘赋给参数类型'dynamic Function(int,CarouselPageChangedReason)’Flutter -函数类型的参数不能赋值给` `void function()`类型的参数“Future<double> Function(dynamic,int)”不能分配给参数类型“num Function(dynamic,int)”不能将参数类型“List<String>”分配给参数类型“List<String>Function()”代码拆分出现React错误(参数类型function()不能赋值给参数类型)Function9的类型参数数目错误,应为10
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

35分钟教你学dart(第二节)

这是该系列的第二节 其实说35分钟教你学会dart,有点言过其实了,不过你依旧可以在这篇文章中学到了解 Dart 基础知识 例如: 变量、数据类型和运算符 条件和循环 collection function...您传递给函数的参数决定了bool. 对于任何给定的输入,此函数将始终返回相同的值类型。如果函数不需要返回值,您可以将返回类型设置为void. main例如,这样做。...命名和默认参数 匿名函数 Dart 支持一流的 functions,这意味着它像对待任何其他数据类型一样对待函数。您可以将它们分配给变量,将它们作为参数传递并从其他函数中返回它们。...匿名函数 您可以将匿名函数分配给名为 的变量onPressed,如下所示: final onPressed = () { print('button pressed'); }; onPressed有一个类型的值...这是上面匿名函数和重构版本的比较: // original anonymous function final onPressed = () { print('button pressed'); };

13.1K30

【Flutter】StatefulWidget 组件 ( FloatingActionButton 组件 | RefreshIndicator 组件 )

; 显示组件 : child ; FloatingActionButton 构造函数源码 : 在构造函数的可选参数中 , 可以查询该组件可设置的参数选项 ; class FloatingActionButton...= null), super(key: key); } 其 onFresh 字段的类型是 RefreshCallback 类型的 , /// A function that's called...final RefreshCallback onRefresh; RefreshCallback 类型就是 Future Function() 类型 ; /// The signature for a...> Function(); 这里定义一个 RefreshCallback 类型方法 , 该方法是一个异步方法 , 当 RefreshIndicator 发生下拉操作时, 回调该方法 ; 异步方法 , 在方法体前添加...中文文档 : https://dart.cn/ Dart 开发者官网 : https://api.dart.dev/ Flutter 中文网 ( 非官方 , 翻译的很好 ) : https://flutterchina.club

2.8K00
  • Flutter--Dart基础语法(四)异步

    、文件读取等等; 如果我们的主线程一直在等待这些耗时的操作完成,那么就会进行阻塞,无法响应其它事件,比如用户的点击; 显然,我们不能这么干!!...一个按钮RaisedButton,当发生点击时执行onPressed函数。 onPressed函数中,我们发送了一个网络请求,请求成功后会执行then中的回调函数。...,因为网络请求阻塞了main函数,那么意味着其后所有的代码都无法正常的继续执行。...(Exception("错误信息")).catchError((error) { print(error); }); print("main function end"); } //...打印结果如下: main function start main function end Exception: 错误信息 Future.delayed(时间, 回调函数) 在延迟一定时间时执行回调函数

    1.4K20

    【Flutter】Flutter 拍照示例 ( 浮动按钮及点击事件 | 底部显示按钮组件 | 手势检测器组件 | 拍照并获取当前拍摄照片 | 从相册中选择图片 )

    类型的值 , FloatingActionButton( // 浮动按钮点击事件 onPressed: () { } ) VoidCallback 就是参数和返回值都是空的函数 ; onPressed...: () {} 括号中的参数为空 , 返回值也为空 ; /// Signature of callbacks that have no arguments and return no data. typedef...VoidCallback = void Function(); 二、底部显示按钮组件 ---- 调用 showModalBottomSheet 方法 , 即可弹出底部按钮组件 , 该组件由开发者定义...GestureDetector(), ], ), ); }); showModalBottomSheet 方法传入两个必要的参数...:io'; import 'package:flutter/material.dart'; import 'package:image_picker/image_picker.dart'; void

    1.6K30

    Flutter之事件节流、防抖封装

    上面的代码事件调用是直接写在节流的实现里的,那么将事件进行抽象,把事件的具体执行方法抽取为一个参数,这样就能满足多个事件的节流控制了,实现如下: bool enable = true; void throttle...原理跟上面的一样,当事件执行报错时不会继续向下执行,此时 enable 无法赋值为 true,一直为 false 从而导致后续事件都不会被执行。 怎么解决上面两个问题呢?...首先解决简单的问题二,问题二很好解决,加一个 try-catch-finally 即可: void throttle(Function func) async{ if(enable){ enable...不是 bool 类型而是 Timer 类型,当事件触发时创建一个 Timer 设置延迟 timeout 后执行,并将 Timer 添加到 Map 中,如果在 timeout 时间内事件再次触发则将 Map...源码:flutter_app_core[1] 引用链接 [1] flutter_app_core: https://github.com/loongwind/flutter_app_core

    2.3K40

    Dart的语法详解系列篇(四)-- 泛型、异步、库等有关详解九、泛型(Generics)十、库和可见性十一、异步支持十二、Isolates十三、生成器(Generators)十四、类型定义十五、元数据

    >表示法将List标记为 泛型(或参数化)类型 - 具有正式类型参数的类型。按照惯例,大多数类型变量都有单字母名称,例如E,T,S,K和V. (一)为什么使用泛型?...这样一来,工具可以检测到将非字符串分配给列表可能是一个错误。...在Java中,您可以测试对象是否为List,但您无法测试它是否是List。)...return tmp; } 在first()上的的泛型类型参数,允许你在以下几个地方使用类型参数T: 1). 在函数的返回类型(T)中 2). 在参数类型(List)中 3)....一个类型定义,或功能型的别名,给出了一个函数类型声明字段时,您可以使用和返回类型的名称。当函数类型分配给变量时,typedef会保留类型信息。

    3.9K40

    # 泛型

    # Typedefs(委托) ​ dart中每个函数都是Function类型,函数的传递可以使用Function做参数定义,有了Typedefs后就更方便了。...; return name; } class Test { //接受一个函数作为参数,但是无法通过参数类型限制接受什么样的函数 void acceptFunc(Function func)...= null) { func(); } } } 从上面代码我们很容易发现Function做参数类型的一些限制,比如我们只希望接受无参的函数。...通过Typedefs限定函数参数的类型 //定义4个typedef类型 typedef void NoArgType(); typedef void OneArgType(String name); typedef...Typedefs,并分辨演示了每种类型的Typedefs在做参数时的用法,最终总结如下:Typedefs定义的类型对入参的验证比较严格,对于返回值为void类型的定义允许接受非void返回值的函数,反过来则不行

    76610

    Dart 基础知识笔记

    tour main() 函数是 Dart 程序的入口 main() 函数返回 void 并具有可选的 List 参数作为参数 所有对象都从 Object 类继承 Dart 是强类型 当您想明确地不希望有任何类型时...关键字是可选的 (Dart 2开始) Dart 中函数也是对象,其类型为 Function,可以将函数分配给变量或作为参数传递给其他函数 Dart 中的箭头语法 => expr 用于简化仅包含一个表达式的函数...Dart 函数可以具有两种类型的参数: required和optional ....非 final 的实例变量还会生成隐式的 setter 方法 Dart 中每个类都隐式定义一个接口 Dart 泛型在运行时会携带其类型信息 (相反,Java中 的泛型使用了 erasure ,这意味着在运行时会删除泛型类型参数...操作符,表示有条件的成员访问,最左边的操作数可以为 null typedef 用于给函数类型提供一个名称 typedef Compare = int Function(Object a, Object

    1.1K40
    领券