参数类型“Type”不能分配给参数类型“FirebaseUser”

Posted

技术标签:

【中文标题】参数类型“Type”不能分配给参数类型“FirebaseUser”【英文标题】:The argument type 'Type' can't be assigned to the parameter type 'FirebaseUser' 【发布时间】:2020-08-04 17:39:15 【问题描述】:

每当我在 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);,

【问题讨论】:

这里 _sendToServer(FirebaseUser) 你只传递了 FirebaseUser 类型... 那我应该写什么。我实际上是想从中获取用户 ID。 【参考方案1】:

您只需将 onPressed()_sendToServer(FirebaseUser) 中的 FirebaseUser 更改为 FirebaseUser()

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

【讨论】:

【参考方案2】:

您需要从 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';

【讨论】:

以上是关于参数类型“Type”不能分配给参数类型“FirebaseUser”的主要内容,如果未能解决你的问题,请参考以下文章

错误:[dart] 参数类型“Context”不能分配给参数类型“BuildContext”。 [argument_type_not_assignable]

参数类型 'Book' 不能分配给参数类型 'Map<String, dynamic>'.dart(argument_type_not_assignable)

错误:参数类型“上下文”不能分配给参数类型“BuildContext”

TextFormField 验证器参数类型“动态函数()”不能分配给

[type] 类型的参数不可分配给 [type] 类型的参数

颤振列表错误参数类型'List'不能分配给参数类型'String'