currentUser() 不是工作类型为什么我看到表达式没有计算为函数,所以它不能被调用

Arm*_*aan 3 dart firebase firebase-authentication flutter

我是 Flutter 的新手,我在注册时正在开发一个简单的身份验证应用程序,我应该导航到聊天屏幕,我想获取当前用户,但是当我调用 FireBaseAuth.instance.currentUser() 时,我遇到了一个异常“表达式不计算为函数,因此无法调用它。” 为什么我看到这个?请帮忙

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:flash_chat/constants.dart';

class ChatScreen extends StatefulWidget {
  static const String id = "chatScreen";
  @override
  _ChatScreenState createState() => _ChatScreenState();
}

class _ChatScreenState extends State<ChatScreen> {
  final FirebaseAuth _auth = FirebaseAuth.instance;
  // ignore: deprecated_member_use
  FirebaseUser loginUser;

  @override
  void initState() {
    super.initState();
    getCurrentUser();
  }

  void getCurrentUser() async {
// HERE I got an Exception "The expression doesn't evaluate to a function, so it can't be invoked."
    final user = await _auth.currentUser();
    if (user != null) {
      loginUser = user;
      print(loginUser.email);
    }
  }


Run Code Online (Sandbox Code Playgroud)

Mab*_*ten 8

为什么要currentUser作为函数调用?它是一个领域,而不是一种方法。

final user = await _auth.currentUser;
Run Code Online (Sandbox Code Playgroud)

更新:由于currentUser不返回未来,因此使用await是无用的,即使它不会导致错误(await在非未来对象上导致,在掩护下,对象被包装在新的未来中)。

文档参考:https : //pub.dev/documentation/firebase_auth/latest/firebase_auth/FirebaseAuth/currentUser.html


小智 5

final currentUser =  await _firebaseAuth.currentUser();
Run Code Online (Sandbox Code Playgroud)

只需将上面的代码替换为

final currentUser =  _firebaseAuth.currentUser;
Run Code Online (Sandbox Code Playgroud)