我已經使用了null safety libs。現在我遇到了這個問題。請看螢屏截圖。 即使添加了一個空值檢查,它也不會發生。
body。FutureBuilder()
future: allPerson(),
builder: (context, snapshot) {
if (snapshot.hasError) print(snapshot.error)。
return snapshot.hasData
? ListView.builder(
itemCount: snapshot.data.length,
itemBuilder。(context, index) {
List list = snapshot.data;
return Card(
孩子。ListTile(
標題。容器(
width: 100,
高度。100。
孩子。Image.network(
"http://192.168.1.101/image_upload_php_mysql/uploads/${list[index]['image']}"),)
),
副標題。Center(child: Text(list[index]['name']))。
),
);
})
: 中心(
孩子。CircularProgressIndicator(),
);
},
),
謝謝你。
uj5u.com熱心網友回復:
你可以從future函式中給你的回傳值一個型別,用于snapshot資料。
FutureBuilder<List<dynamic>> (
future: allPerson(),
builder: (context, AsyncSnapshot<List<dynamic> > snapshot) {
if (snapshot.hasError) print(snapshot.error)。
return snapshot.hasData
? ListView.builder(
itemCount: snapshot.data!.length,
itemBuilder。(context, index) { ...
uj5u.com熱心網友回復:
snapshot.data可以為空。所以你應該使用snapshot.data?.length ??0
因此,如果snapshot.data是空的,那么它將設定長度為0.
。uj5u.com熱心網友回復:
只要這樣做
itemCount: snapshot.data!.length
然后問題就解決了
CodePudding在null safety中,你不能將一個nullable變數(一個可以被設定為null的變數)設定為non nullable變數(一個不接受null值的變數)。
這里 itemCount 是非空變數,但是變數資料是空的,可能無法訪問變數的長度。
itemCount: snapshot.data.length
嘗試將其改變為以下代碼
itemCount: snapshot.data? ["length"] ? 0?
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/309250.html
標籤:
上一篇:容器在飄動中的自動高度
下一篇:將函式作為文本閱讀并用于繪圖

