簡體   English   中英

如何在 Flutter 模型工廠中處理空值

[英]How to handle a null value in Flutter Model Factory

我有一個需要解析並返回到FutureBuilder的 json。 我遇到的問題出在這一行: final meta = jsonDecode(parsedJson!['metadata']); 有時metadata為 null 並拋出此錯誤Unhandled Exception: type 'Null' is not a subtype of type 'String' 處理它的最佳方法是什么?

元數據包含我想在網格中使用的圖像 url。 因此,如果可能,應使用默認圖像 url 創建默認元數據對象。

class Data {
  final int total;
  final MetaData metadata;

  Data({
    required this.total,
    required this.metadata,
  });

  factory Data.fromJson(parsedJson) {
    final meta = jsonDecode(parsedJson!['metadata']);

    MetaData md = MetaData.fromJson(meta);

    return Data(
      total: parsedJson['total'] ?? 0,
      metadata: md,
    );
  }
}

class MetaData {
  final String image;

  MetaData({
    required this.image,
  });

  factory MetaData.fromJson(Map<String?, dynamic> json) {
    return MetaData(
      image: json['image'] ?? "",
    );
  }
}

*** 編輯我的解決方案

我決定做這樣的事情。 我將根據需要填充對象字符串。 這樣可以嗎?

  factory Data.fromJson(parsedJson) {
    var metadataString = parsedJson['metadata'];

    metadataString ??=
        "{\"image\":\"https://somewebsite.com/1.png\"}";

    var meta = jsonDecode(metadataString);

    MetaData md = MetaData.fromJson(meta);

    return Data(
      total: parsedJson['total'] ?? 0,
      metadata: md,
    );
  }

您需要檢查您的元數據是否為空。 並按照此代碼段

    metadata = json['metadata'] != null
        ? Metadata.fromJson(json['metadata'])
        : null;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM