在使用Firebase Auth制作密码重置页面时。我已经使用Firebase制作了几个页面,但从未遇到过这种错误,请提出解决方案。
显示错误:-
Error: The argument type 'Future<dynamic>' can't be assigned to the parameter type 'void Function()?'.
lib/pages/forgot_pw_page.dart:82
- 'Future' is from 'dart:async'.
onPressed: passwordReset(),
我做错了什么?
代码:
(我已经修剪了代码,因为它不允许发布整个)
class ForgotPasswordPage extends StatefulWidget {
const ForgotPasswordPage({super.key});
@override
State<ForgotPasswordPage> createState() => _ForgotPasswordPageState();
}
class _ForgotPasswordPageState extends State<ForgotPasswordPage> {
final _emailController = TextEditingController();
@override
void dispose() {
_emailController.dispose();
super.dispose();
}
Future passwordReset() async {
await FirebaseAuth.instance.sendPasswordResetEmail(email: _emailController.text.trim());
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.grey[300],
body: SafeArea(
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Padding(
padding: const EdgeInsets.symmetric(horizontal: 25),
child: MaterialButton(
onPressed: passwordReset(),
),
),
],
),
),
),
);
}
}
2条答案
按热度按时间a11xaf1n1#
6uxekuva2#
Material Button和flutter中的所有按钮都只接受void函数。那些只是触发而不返回任何东西的按钮。在本例中,resetPassword是一个Future函数。在本例中,您需要将它 Package 在一个void函数
() => resetPassword()
中。对于任何声明为非void的函数,都使用此模式。这是每个人偶尔会遇到的一个非常常见的错误