firebase - Flutter/Firebase 错误 - 未处理的异常:类型 '_CompactLinkedHashSet' 不是类型 'FutureOr 的子类型>>'
问题描述
我正在尝试允许用户注册以使用我的应用程序使用 firebase。我有一个“创建帐户”按钮,按下时我希望我的 submit() 函数被执行。这是我的提交功能:
Future submit() async {
if (validate()) {
_formKey.currentState.reset();
await firebaseAuth
.createUserWithEmailAndPassword(
email: _emailController.text, password: _passwordController.text)
.then(
(user) => {
FirebaseFirestore.instance
.collection('users')
.doc(user.user.uid)
.set(
{
'id': user.user.uid,
'displayName': _firstNameController.text.trim() +
" " +
_lastNameController.text.trim(),
'email': _emailController.text.trim(),
'createdat': DateTime.now(),
},
),
},
)
.catchError(
(err) => {
print(
err.toString(),
),
},
);
}
}
然后我在这里调用它:
RaisedButton(
child: Text(
'Create an Account',
style: TextStyle(color: Colors.white),
),
onPressed: () async {
await submit();
}),
但是,当我运行我的应用程序时,填写我的注册表单,然后按按钮提交,我收到以下消息:
[VERBOSE-2:ui_dart_state.cc(177)] Unhandled Exception: type '_CompactLinkedHashSet<void>' is not a subtype of type 'FutureOr<Set<Future<void>>>'
#0 _FutureListener.handleError (dart:async/future_impl.dart:160:20)
#1 Future._propagateToListeners.handleError (dart:async/future_impl.dart:708:47)
#2 Future._propagateToListeners (dart:async/future_impl.dart:729:24)
#3 Future._completeError (dart:async/future_impl.dart:537:5)
#4 _AsyncAwaitCompleter.completeError (dart:async-patch/async_patch.dart:47:15)
#5 FirebaseAuth.createUserWithEmailAndPassword (package:firebase_auth/src/firebase_auth.dart)
<asynchronous suspension>
#6 _SignUpPageState.submit (package:consi/screens/SignUpPage.dart:68:12)
#7 _SignUpPageState.build.<anonymous closure> (package:consi/screens/SignUpPage.dart:242:39)
#8 _SignUpPageState.build.<anonymous closure> (package:consi/screens/SignUpPage.dart:241:42)
#9 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:993:19<…>
有人可以帮我解决这个问题吗?谢谢
解决方案
尝试删除 Future 类型的代码,如下所示,然后调用提交按钮。
如果不起作用;在注册期间调用的每个函数中删除它。
如果问题仍然存在,我建议您通过在此视图上放置断点来进行内联调试,以便您可以看到程序本身是如何执行每一行代码的。
submit() async {
if (validate()) {
_formKey.currentState.reset();
await firebaseAuth
.createUserWithEmailAndPassword(
email: _emailController.text, password: _passwordController.text)
.then(
(user) => {
FirebaseFirestore.instance
.collection('users')
.doc(user.user.uid)
.set(
{
'id': user.user.uid,
'displayName': _firstNameController.text.trim() +
" " +
_lastNameController.text.trim(),
'email': _emailController.text.trim(),
'createdat': DateTime.now(),
},
),
},
)
.catchError(
(err) => {
print(
err.toString(),
),
},
);
}
推荐阅读
- php - Vimeo API 未响应“If-Modified-Since”标头
- forms - Symfony 4,对象和子对象,缺少外键
- android - Android:如何仅剪切顶部圆角
- java - Selenium 将 Web 表格与 Excel 数据进行比较
- ios - Xcode 中的 Instruments 中显示的 Malloc 内存泄漏是什么,我该如何修复它们?
- node.js - 安装 http-server 时出错:找不到 ecstatic@^3.0.0 的匹配版本
- java - 在 Android 中将图像上传到 Cloudinary 失败
- mysql - SQL查询获取排序表中的行数
- python - 'CT_Highlight' 对象没有属性 'attribute'
- reactjs - 仅在第一次登录 React Redux 时显示欢迎组件