firebase Flutter中的错误“空值上使用了空检查运算符”

k2fxgqgv  于 2022-12-30  发布在  Flutter
关注(0)|答案(2)|浏览(120)

误差

我尝试使用登录用户的uid从firebase中获取用户数据。我还使用了model

型号代码

Details detailsFromJson(String str) => Details.fromJson(json.decode(str));

class Details {
  Details({
    required this.id,
    required this.age,
    required this.drinkstalkSE,
    required this.drinksUnderstandSE,
    required this.familyChildren,
   
  });
  String id;
  String age;
  String drinkstalkSE;
  String drinksUnderstandSE;
  String familyChildren;
 

  factory Details.fromJson(Map<String, dynamic> json) => Details(
        id: json["id"] ?? "",
        age: json["age"] ?? "",
        drinkstalkSE: json["drinkstalkSE"] ?? "",
        drinksUnderstandSE: json["drinksUnderstandSE"] ?? "",
        familyChildren: json["familyChildren"] ?? "",
        
      );

  Map<String, dynamic> toJson() => {
        "id": id,
        "age": age,
        "drinkstalkSE": drinkstalkSE,
        "drinksUnderstandSE": drinksUnderstandSE,
        "familyChildren": familyChildren,
       
      };
}

后端代码

bool loading = false;

  @override
  initState() {
    super.initState();
    loading = true;

    getDetails();
  }

  Details? oneUserDetails;
  Future<void> getDetails() async {
    final sp = context.read<SignInProvider>();
    final id = sp.uid;
    final reference = FirebaseFirestore.instance.doc('users/$id');
    final snapshot = reference.get();

    final result = await snapshot.then(
        (snap) => snap.data() == null ? null : Details.fromJson(snap.data()!));
    print('result is ====> $result');
    setState(() {
      oneUserDetails = result;
      loading = false;
    });
  }

屏幕代码

数据库映像

在我的代码中没有任何错误显示我认为我的模型中有问题,但是我不明白错误是什么以及如何解决它。如何解决这个错误?

eiee3dmh

eiee3dmh1#

价值观 如果你使用的json数据被列出,你需要在类中为它们创建一个单独的部分。如果你不知 prop 体方法,把你的json数据粘贴到这个站点上,它会为你处理它。你会发现你的错误。
https://javiercbk.github.io/json_to_dart/

1aaf6o9v

1aaf6o9v2#

据我所知,模型有一个问题,在模型中,列表drinksUnderstandSE和drinkstalkSE都是字符串,但在数据库中,它是列表,所以它应该是列表。

相关问题