从实时数据库 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"];
}
}
我想从实时数据库中获取用户数据并在我的应用程序中检索到 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"];
}
}