为什么在IDE中会出现此错误?错误出现在register函数中.

The argument type 'Future<UserCredential> Function({required String
email, required String password})' can't be assigned to the parameter
type 'Future<bool> Function({required String email, required String
password})'.
  @action
  Future<bool> _registerOrLogin({
    required LoginOrRegisterFunction fn,
    required String email,
    required String password,
  }) async {
    authError = null;
    isLoading = true;
    try {
      await fn(
        email: email,
        password: password,
      );
      currentUser = FirebaseAuth.instance.currentUser;
      await _loadReminders();
      return true;
    } on FirebaseAuthException catch (e) {
      currentUser = null;
      authError = AuthError.from(e);
      return false;
    } finally {
      isLoading = false;
      if (currentUser != null) {
        currentScreen = AppScreen.reminders;
      }
    }
  }

  @action
  Future<bool> register({
    required String email,
    required String password,
  }) =>
      _registerOrLogin(
        fn: FirebaseAuth.instance.createUserWithEmailAndPassword, // error is here
        email: email,
        password: password,
      );

  typedef LoginOrRegisterFunction = Future<bool> Function({
    required String email,
    required String password,
  });

推荐答案

奇怪的是,DartPad在"IDE"中显示了正确的错误,而如果我try 复制它,我会得到前面提到的错误.简单地说,错误不是这样的.错误应该是您的tyecif没有按照上下文的要求返回Future<UserCredential>.

换句话说,FirebaseAuth.instance.createUserWithEmailAndPassword与您定义的LoginOrRegisterFunction类型不匹配.这是有道理的,因为你写的LoginOrRegisterFunction应该返回Future<bool>.

相反,FirebaseAuth.instance.createUserWithEmailAndPassword返回Future<UserCredential>

你要么换掉typedef美元,要么另想办法解决你的问题

Flutter相关问答推荐

将目标平台设置为Flutter 构建

Flutter AppBar Animation反向调试

如何组合匹配器

将CLOUD_FIRESTORE程序包更新到版本4.13.0(到Windows)时出现问题

查询满足AND条件的文档的FiRestore

设置Flutter 中的ListView.Builder()的最小高度

上传的图像不能在FireBase中预览.S档案类型为空白,摆动

如何在flutter中将所有单词的第一个字母大写

显示图像的放大部分

断言失败:std::move(hal_2_1_verifier).Run(). 初始化,LE音频客户端至少需要Bluetooth音频HAL V2.1

Flutter 中的 Provider 不会在第一次构建 App 时返回

如何正确地将 PageView 设置为 AppBar 的标题?

我想在文本结束后显示分隔线.它会在第一行、第二行或第三行结束

如何在 Flutter (iOS) 中解决这个问题

为什么将 bloc 提供程序放在单独的文件/类中会引发错误?

Flutter Bloc 使用 Cubit 监听流和emits 状态

为什么 setState 不改变我的变量 Flutter?

如何在 flutter 中更改日期 Select 器 colored颜色 ?

构建失败 - 无法解析 io.grpc:grpc-core:[1.28.0]. (是的,我已经升级到 mavenCentral())

无法通过 Macbook M1 Pro 中的 Android Studio 安装 Android 模拟器