Flutter / Firebase错误-未处理的异常:类型'_CompactLinkedHashSet <void>'不是类型'FutureOr <Set <Future <void >>>'的子类型

时间:2020-10-23 09:40:20

标签: firebase flutter

我正在尝试允许用户使用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<…>

有人可以帮助我解决此问题吗?谢谢

1 个答案:

答案 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(),
          ),
        },
      );
}