![](/img/trans.png)
[英]Flutter: Unhandled Exception: type 'QuerySnapshot' is not a subtype of type 'Future<dynamic>?'
[英]Flutter/Firebase error - Unhandled Exception: type '_CompactLinkedHashSet<void>' is not a subtype of type 'FutureOr<Set<Future<void>>>'
我正在嘗試允許用戶使用 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(),
),
},
);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.