我正在尝试允许用户使用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<…>
有人可以帮助我解决此问题吗?谢谢
答案 0 :(得分:0)
尝试删除以下代码的“将来”类型,然后调用“提交”按钮。
如果不起作用;在注册期间调用的每个函数中将其删除。
如果问题仍然存在,建议您在此视图上放置断点,以进行内联调试,以便您可以看到程序本身如何执行每一行代码。
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(),
),
},
);
}