无法将参数类型“类型”分配给参数类型“ FirebaseUser”

时间:2020-04-21 20:27:10

标签: firebase flutter firebase-realtime-database dart firebase-authentication

每当我在onPressed函数中调用此函数(_sendToServer)时,都会出现此错误。 错误:不能将参数类型“ Type”分配给参数类型“ FirebaseUser”。 (argument_type_not_assignable位于[robic] lib \ profile_page2.dart:117) 我如何解决这个问题。

 _sendToServer(FirebaseUser user) {
    if (_key.currentState.validate()) {
      _key.currentState.save();
      DatabaseReference ref = FirebaseDatabase.instance.reference();
      var data = {
        "name": name,
        "profession": profession,
        "message": message,
        "id": user.uid,
      };
      ref.child('node-name').push().set(data).then((v) {
        _key.currentState.reset();
      });
    } else {
      setState(() {
        _autovalidate = true;
      });
    }
  }
onPressed: () {_sendToServer(FirebaseUser);},

2 个答案:

答案 0 :(得分:1)

您需要从FirebaseAuth获取当前用户

改为尝试

_sendToServer() async{
    FirebaseUser user = await FirebaseAuth.instance.currentUser();
    if (_key.currentState.validate()) {
      _key.currentState.save();
      DatabaseReference ref = FirebaseDatabase.instance.reference();
      var data = {
        "name": name,
        "profession": profession,
        "message": message,
        "id": user.uid,
      };
      ref.child('node-name').push().set(data).then((v) {
        _key.currentState.reset();
      });
    } else {
      setState(() {
        _autovalidate = true;
      });
    }
  }

调用这样的函数

onPressed: () {_sendToServer();},

别忘了导入FirebaseAuth

import 'package:firebase_auth/firebase_auth.dart';

答案 1 :(得分:1)

您只需要将 onPressed(){_ sendToServer(FirebaseUser)} 中的 FirebaseUser 更改为 FirebaseUser()

onPressed: () {_sendToServer(FirebaseUser());},