flutter - 颤振中的功能
问题描述
我尝试在小部件中使用函数,但收到此错误错误:无法将参数类型“函数”分配给参数类型“无效函数()?”。
我在这里搜索,看到有人建议使用我在代码中设置的相同方法,那么问题是什么?
import 'package:flutter/material.dart';
class ReusableCard extends StatelessWidget {
ReusableCard(
{required this.colour, required this.cardChild, required this.onPress});
final Color colour;
final Widget cardChild;
final Function onPress;
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onPress,
child: Container(
child: cardChild,
margin: EdgeInsets.all(15.0),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10.0),
color: colour,
),
),
);
}
}
解决方案
默认情况下,Function
类型是没有参数的动态类型值返回函数。
通常,Flutter 期望其按钮内部有 void 回调,这意味着它期望一个void Function
没有参数的类型。
解决此问题的一种常见、灵活且易读的方法是使用 void 函数包装您的函数,例如:
() => myFunction()
即使您的函数非常不同(例如,它有一些参数),这也会起作用,从而使您的代码更加灵活。
() => myFunctionThatAcceptsAnInteger(5)
推荐阅读
- database - Android应用程序未使用Url保存在数据库中
- excel - 从 .net Visual Basic 应用程序中关闭 Excel 实例 Excel 要求保存文件
- amazon-web-services - 在 Cloudformation 中为 EC2 服务创建角色
- c# - 像移动鼠标位置一样在 x 轴上移动对象(Unity3d)
- javascript - 如果该元素是第一个子元素,则无法删除 contentEditable 父元素中的 HTML 元素
- javascript - 将值设置为来自 chrome 扩展的角度变量
- python - FileNotFoundError:[Errno 2] 没有这样的文件或目录:'ffprobe':'ffprobe'
- video - 场景对齐池 (SAP)
- unit-testing - 应用 TDD 时是否有无法测试的内容
- java - 如何在保持锚点的同时使小部件看起来平滑