如何解决颤振上对空值使用空检查运算符的问题?

Das*_*ola 0 dart flutter google-cloud-firestore dart-null-safety

我尝试使用记录的用户 ID 从子集合中获取数据。然后显示这个错误 在此输入图像描述

我尝试从 firestore 子集合中获取它。集合名称是“users”,文档名称是 userid

代码

Future<void> getAmount() async {
    final id = "${loggedInUser.uid}";
    final reference = FirebaseFirestore.instance.doc('users/$id/recharge/$id');
    final snapshot = reference.get();

    final result = await snapshot.then(
        (snap) => snap.data() == null ? null : Amounts.fromJson(snap.data()!));
    print('result is ====> $result');
    setState(() {
      oneAmount = result;
      loading = false;
    });
  }
Run Code Online (Sandbox Code Playgroud)

文本小部件

Text(
            oneAmount!.amount,
            style: GoogleFonts.roboto(
              textStyle: TextStyle(
                fontSize: 20,
                fontWeight: FontWeight.bold,
                color: kWhite,
              ),
            ),
Run Code Online (Sandbox Code Playgroud)

模型

import 'dart:convert';

Amounts articlesFromJson(String str) => Amounts.fromJson(json.decode(str));

String articlesToJson(Amounts data) => json.encode(data.toJson());

class Amounts {
  Amounts({
    required this.id,
    required this.amount,
  });
  String id;
  String amount;

  factory Amounts.fromJson(Map<String, dynamic> json) => Amounts(
        id: json["id"] ?? "",
        amount: json["amount"] ?? "",
      );

  Map<String, dynamic> toJson() => {
        "id": id,
        "amount": amount,
      };
}

Run Code Online (Sandbox Code Playgroud)

Md.*_*ikh 5

!您可以接受 null 值,而不是使用,例如

Text("${oneAmount?.amount}"),
Run Code Online (Sandbox Code Playgroud)

或者在 null 情况下提供默认值

Text(oneAmount?.amount?? "got NUll"),
Run Code Online (Sandbox Code Playgroud)

或进行空检查然后显示小部件

if(oneAmount!=null) Text(oneAmount.amount),
Run Code Online (Sandbox Code Playgroud)