参数类型 'Function' 无法分配给参数类型 'void Function()?'
The argument type 'Function' can't be assigned to the parameter type 'void Function()?'
import 'package:flutter/material.dart';
import 'package:ourchatapp/constants.dart';
class RoundedButton extends StatelessWidget {
final String text;
final Function press;
final Color color, textColor;
const RoundedButton({
Key? key,
required this.text,
required this.press,
this.color = kPrimaryColor,
this.textColor = Colors.white,
}) : super(key: key);
@override
Widget build(BuildContext context) {
Size size = MediaQuery.of(context).size;
return Container(
margin: EdgeInsets.symmetric(vertical: 10),
width: size.width * 0.8,
child: ClipRRect(
borderRadius: BorderRadius.circular(29),
child: newElevatedButton(),
),
);
}
Widget newElevatedButton() {
return ElevatedButton(
child: Text(
text,
style: TextStyle(color: textColor),
),
onPressed: press,
style: ElevatedButton.styleFrom(
primary: color,
padding: EdgeInsets.symmetric(horizontal: 40, vertical: 20),
textStyle: TextStyle(
color: textColor, fontSize: 14, fontWeight: FontWeight.w500)),
);
}
}
我想设计自己的按钮,当我把它添加到相关页面时,出现这样的错误,当我点击按钮时,它不会在页面之间切换。
我在欢迎屏幕上创建了登录和注册按钮,但是当我单击这些按钮时,它们不会切换到相关页面。请帮助我
您已将 press 声明为 Function 类型,因此您更改 -
onPressed: press,
至-
onPressed: () => press(),
您将通过这些方式调用该函数,它会更改页面。
尝试将 press
类型从 Function
更改为 VoidCallback
,因此您的 press 参数应如下所示:
final VoidCallback press
或者试试这个:
onPressed : press.call()
import 'package:flutter/material.dart';
import 'package:ourchatapp/constants.dart';
class RoundedButton extends StatelessWidget {
final String text;
final Function press;
final Color color, textColor;
const RoundedButton({
Key? key,
required this.text,
required this.press,
this.color = kPrimaryColor,
this.textColor = Colors.white,
}) : super(key: key);
@override
Widget build(BuildContext context) {
Size size = MediaQuery.of(context).size;
return Container(
margin: EdgeInsets.symmetric(vertical: 10),
width: size.width * 0.8,
child: ClipRRect(
borderRadius: BorderRadius.circular(29),
child: newElevatedButton(),
),
);
}
Widget newElevatedButton() {
return ElevatedButton(
child: Text(
text,
style: TextStyle(color: textColor),
),
onPressed: press,
style: ElevatedButton.styleFrom(
primary: color,
padding: EdgeInsets.symmetric(horizontal: 40, vertical: 20),
textStyle: TextStyle(
color: textColor, fontSize: 14, fontWeight: FontWeight.w500)),
);
}
}
我想设计自己的按钮,当我把它添加到相关页面时,出现这样的错误,当我点击按钮时,它不会在页面之间切换。 我在欢迎屏幕上创建了登录和注册按钮,但是当我单击这些按钮时,它们不会切换到相关页面。请帮助我
您已将 press 声明为 Function 类型,因此您更改 -
onPressed: press,
至-
onPressed: () => press(),
您将通过这些方式调用该函数,它会更改页面。
尝试将 press
类型从 Function
更改为 VoidCallback
,因此您的 press 参数应如下所示:
final VoidCallback press
或者试试这个:
onPressed : press.call()