簡體   English   中英

FutureBuilder 在 null 上調用了方法“[]”。 接收器:null

[英]FutureBuilder The method '[]' was called on null. Receiver: null

我在我的 dart 代碼中遇到了這個錯誤。 如果我刪除 coverImage 小部件,它會為其他 snapshat.data 的小部件提供錯誤

我的錯誤

小部件庫捕獲的異常 構建 FutureBuilder<DocumentSnapshot<Map<String, dynamic>>>(dirty, state: _FutureBuilderState<DocumentSnapshot<Map<String, dynamic>>>#45e11) 引發了以下 NoSuchMethodError:方法 '[]'在 null 上調用。 接收器:null 嘗試調用:

在此處輸入圖像描述

我使用數據的方式。

image: DecorationImage(
                fit: BoxFit.cover,
                image: (snapshot.data['coverImage']).isEmpty
                    ? AssetImage('assets/background.png')
                    : NetworkImage(snapshot.data['coverImage']),
              ),

我的 flutter 醫生我的顫振醫生

它可能是你的快照數據是 null 也許你應該處理它 == null

image: (snapshot?.data['coverImage']).isEmpty 

或者

final dataCoverImage = snapshot.data['coverImage']

image: (dataCoverImage == null) || (dataCoverImage.isEmpty)
? AssetImage('assets/background.png')
: NetworkImage(snapshot.data['coverImage']),

嗨,在您的 switch 語句中,您沒有做任何事情,因此您沒有過濾 futurebuilder 所在的 state ,因此在數據尚未完成時嘗試訪問數據:

    return FutureBuilder(builder: ( context,  snapshot) {
      if(snapshot.hasData){
        return ListView();
        
      }else if (snapshot.hasError){
        return Center(child:Text(snapshot.error.toString()));
      }
      return Center(child: CircularProgressIndicator());



    }

這里處理了三個主要狀態。

檢查您的數據庫中是否存在['coverImage']您的錯誤表明該字段不在您的數據庫中 您可以通過以下方式檢查代碼

(snapshot.data['coverImage']).isEmpty || 快照.data['coverImage'] ==null)

暫無
暫無

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

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