我试图在用户登录时从 Firestore 加载一些数据,并且需要等到数据加载后再继续。但是,我等待结果的努力没有奏效。
Future<bool> userListener() async {
_auth.onAuthStateChanged.listen((firebaseUser) {
bool isDone = false;
if (firebaseUser != null) {
isDone = await loadUserData(firebaseUser); // This line is killing me!!
return isDone;
} else {
return false;
}
}, onError: (error) {
print('error in UserListener: $error');
});
}
Future<bool> loadUserData(FirebaseUser user) async {
Firestore database = Firestore();
DocumentReference data = database.collection('userData').document(user.uid);
try {
DocumentSnapshot myQuery = await data.get();
theNumber = myQuery.data['theNumber'];
return true;
} on PlatformException catch (e) {
print(e);
return false; …Run Code Online (Sandbox Code Playgroud) 将应用程序从 Swift 移植到 Flutter。在我的应用程序中,我有一个类,MyClass,并且正在处理大约 250 个实例的列表。在不同的时候,我需要根据特定属性对对象进行分组。
在 Swift 中,我能够像这样创建对象的分组列表:
var groupedList = Dictionary<String, Array<MyClass>>()
Run Code Online (Sandbox Code Playgroud)
然后我就可以遍历我的对象列表,并根据需要将项目分配给正确的数组。我认为在 Flutter 中制作列表地图可能会这样:
Map groupedList = Map<String, List<MyClass>>();
Run Code Online (Sandbox Code Playgroud)
然后我可以遍历项目,测试属性,为每个唯一值创建一个 Map 条目并将项目附加到正确的列表:
for (var item in listOfObjects) {
if (!groupedList.containsKey(item.someproperty)) {
List<MyClass> sublist = [];
groupedList[item.someproperty] = sublist;
}
groupedList[item.someproperty].add(item);
}
Run Code Online (Sandbox Code Playgroud)
然而,我得到的是一个包含所有正确键的映射,但每个列表只包含一个 MyClass 实例,而不是一个实际的 MyClass 列表。