我试图传递参数到一个按钮小部件,但我得到下面的错误消息。
下面是我的观点:
ElevatedRegisterButton(
navigator: Navigator.of(context)
.push(MaterialPageRoute(builder: (context) {
return const RegisterPage1();
})))
这是我的小部件,我试图传递参数:
import 'package:flutter/material.dart';
class ElevatedRegisterButton extends StatefulWidget {
const ElevatedRegisterButton({super.key, required this.navigator});
final String navigator;
@override
State<ElevatedRegisterButton> createState() => _ElevatedRegisterButtonState();
}
class _ElevatedRegisterButtonState extends State<ElevatedRegisterButton> {
@override
Widget build(BuildContext context) {
return ElevatedButton(
style: ElevatedButton.styleFrom(backgroundColor: Colors.red),
onPressed: () {
widget.navigator;
},
child: const Text('Register'),
);
}
}
下面是我收到的错误消息:
参数类型“Future”不能分配给参数类型“String”。
2条答案
按热度按时间avwztpqn1#
您需要将
navigator
成员设置为final void Function()
类型,因为ElevatedButton
的onPressed
属性需要此类型。您还需要以不同的方式传递它,因为push
是另一种类型的函数。最后,只需将onPressed
设置为widget.navigator
。下面是基于您的代码片段的示例代码:
ht4b089n2#
在您的代码中:
您正在接受
String navigator
;但是你传递给它的是一个Future
:如果您尝试运行代码,则会得到一个错误:
因此,要解决这些问题,请按如下所示重构代码:
另请参见
setState() or markNeedsBuild called during build