buildProductList() {
return StreamBuilder(
initialData: productBloc.getAll(),
stream: productBloc.getStream,
builder: (context, snapshot){
return snapshot.data.length>0? buildProductListItems(snapshot) : Center(child: Text("Oops.."),);},
);
}
我在嘗試“?” 和”!” 沒有作業的例子,snapshot.data?.length>0?
快照.!data.length>0? 在此處輸入影像描述 不起作用
這里錯誤資訊。
沒有為“物件”型別定義吸氣劑“長度”。(檔案)嘗試匯入定義“length”的庫,將名稱更正為現有 getter 的名稱,或者定義一個名為“length”的 getter 或欄位。
uj5u.com熱心網友回復:
嘗試
snapshot.data!.length
注意!
并閱讀此內容以進行澄清:Dart Null Safety
uj5u.com熱心網友回復:
首先檢查資料是否是這樣的
List myFun(snapshot) {
return (snapshot.data is List)? snapshot.data as List : []
}
現在你可以像這樣使用它
myFun(snapshot).length>0? buildProductListItems(snapshot) : Center(child: Text("Oops.."),);
uj5u.com熱心網友回復:
好的,所以我認為您的問題不在于空安全性或!,
您的錯誤與您無法呼叫.length動態物件的事實有關。
所以要解決這個問題(顯然在你把 放在!之后data),你應該給你的快照引數一個型別。
因此,例如,如果您的資料是一個串列,您應該這樣做:
builder: (context, AsyncSnapshot<List> snapshot){
return snapshot.data!.length>0? buildProductListItems(snapshot) : Center(child: Text("Oops.."),);},
);
我希望這能解決你的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/450540.html
