[英]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']),
),
它可能是你的快照數據是 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']您的錯誤表明該字段不在您的數據庫中 您可以通過以下方式檢查代碼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.