繁体   English   中英

从 firestore 数据库获取数据时出现“未处理的异常:null 值上使用的 Null 检查运算符”

[英]Getting "Unhandled Exception: Null check operator used on a null value" while getting data from firestore database

大家好,我正在从事 flutter 项目,我正在从 firestore 数据库获取用户信息,但是当我获取该信息时,它会抛出异常

错误:

E/flutter (18952): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Null check operator used on a null value
E/flutter (18952): #0      _ProfileState.getData (package:recipedia/Tabs/profile.dart:30:86)
E/flutter (18952): <asynchronous suspension>

我的代码:

Future<void> getData() async {
  emailFromPrefs = (await SharedPreference().getCred('email'))!;
  nameFromDatabase = (await UserModel().getUser(emailFromPrefs, 'name'))!;

  setState(() {
    name = nameFromDatabase;
    email = emailFromPrefs;
  });
}

我的用户模型 Class 获取数据 function:

Future<String?> getUser(String email, String data) async {
  try {
    CollectionReference users =
        FirebaseFirestore.instance.collection('users');
    final snapshot = await users.doc(email!).get();
    final data = snapshot.data() as Map<String, dynamic>;
    return data['$data'];
  } catch (e) {
    return 'Error fetching user';
  }
}

而不是使用! 尝试先进行 null 检查。

Future<void> getData() async {
  final mEmail = await SharedPreference().getCred('email');
  if(mEmail==null){
     debugPrint("Got null on email");
     return;}
 
   emailFromPrefs = mEmail;
   final mName = await UserModel().getUser(emailFromPrefs, 'name');
 
   if(mName ==null){
     debugPrint("Got null on name");
     return;
   }
   nameFromDatabase  = mName;

  setState(() {
    name = nameFromDatabase;
    email = emailFromPrefs;
  });
}

users.doc(email.).get()上的getUser也是如此。 try-catch 应该处理这个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM