从实时数据库 firebase (flutter) 中检索到 null

Retrieved null from realtime database firebase (flutter)

我想从实时数据库中获取用户数据并在我的应用程序中检索到 null,我制作了一个应用程序,我想将用户数据放入他的帐户中,但我得到的是 null。

这是我的数据模型

class AdminData {
  String? id;
  String? email;
  String? name;
  String? phone;

  AdminData({this.email, this.name, this.phone});

  AdminData.fromSnapshot(DataSnapshot dataSnapshot)
  {
    id = dataSnapshot.key;
    email = dataSnapshot.value("email");
    name = dataSnapshot.value("name");
    phone = dataSnapshot.value("phone");
  }
}

主要

DatabaseReference adminRef = FirebaseDatabase.instance.reference().child("admin");

这里是我的全局变量

String mapKey = "AIzaSyBCbiDMiUQ3VHdH8RFnCdDZC_tN0ITScIo";
User? currentfirebaseUser;
AdminData adminCurrentInfo = AdminData();

int driverRequestTimeOut = 40;
String statusRide = "";
String carDetail = "";
String driverName = "";
String driverPhone = "";
String driverKey = "";
String serverToken = "key=AAAAi0I5-DE:APA91bEPa3vsYU2YU1WUzXHEWL_djQgbP0-ps59l-Mght-UK0l7f-wQKjDXULjWAb-G789gbZEVlM6i88whUN6qK4hZk8yG_9Mgg4aLcuWt4bZF1O5aAsdgJRJX1GjLfeVQuhMKU1jYG";

我获取管理员信息的函数 firebase 数据库

static void getCurrentOnlineAdminInfo() async
{
    currentfirebaseUser = await FirebaseAuth.instance.currentUser;
    String userId = currentfirebaseUser!.uid;
    print("current user name ======== ${userId}");

    //DatabaseReference reference = FirebaseDatabase.instance.reference().child("admin").child(userId);

    adminRef.child(userId).once().then((DataSnapshot dataSnapshot)
    {
      if(dataSnapshot.value != null){
        adminCurrentInfo = AdminData.fromSnapshot(dataSnapshot);
        print("current user name ======== ${adminCurrentInfo.name}");
      }
    });
}

然后我在 initstate

中调用函数
  @override
  void initState(){
    // TODO: implement initState
    super.initState();
    polylinePoints = PolylinePoints();
    AssistantMethods.getCurrentOnlineAdminInfo();
    print(adminCurrentInfo.name);
  }

我的数据库看起来

admin
5qH6CxYdu0WYrevcDDY.......
   email: "bish@.."
   name: "bishoy"
   password: "....."
   phone: "....."

然后我收到了这个

E/flutter (12780): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: NoSuchMethodError: Class '_InternalLinkedHashMap<Object?, Object?>' has no instance method 'call'.
E/flutter (12780): Receiver: _LinkedHashMap len:4
E/flutter (12780): Tried calling: call("email")
E/flutter (12780): #0      Object.noSuchMethod (dart:core-patch/object_patch.dart:68:5)
E/flutter (12780): #1      new AdminData.fromSnapshot (package:free_now_taxi/Admin_app/Models/admin_request_firebase.dart:15:31)
E/flutter (12780): #2      AssistantMethods.getCurrentOnlineAdminInfo.<anonymous closure> (package:free_now_taxi/Admin_app/Assistants/assistantMethods.dart:53:38)
E/flutter (12780): #3      _rootRunUnary (dart:async/zone.dart:1436:47)
E/flutter (12780): #4      _CustomZone.runUnary (dart:async/zone.dart:1335:19)
E/flutter (12780): <asynchronous suspension>
E/flutter (12780): 

您在模型中使用了弯括号 () 而不是 []

试试这个:

class AdminData{
  String? id;
  String? email;
  String? name;
  String? phone;

  AdminData({this.email, this.name, this.phone});

  AdminData.fromSnapshot(DataSnapshot dataSnapshot)
  {
    id = dataSnapshot.key;
    email = dataSnapshot.value["email"];
    name = dataSnapshot.value["name"];
    phone = dataSnapshot.value["phone"];
  }
}