對于第 22 行的以下問題,我需要您的幫助。 Flutter 說,“沒有為 Iterable 定義 addAll”。我需要更改代碼中的哪些內容,或者您??需要其他資訊嗎?
import 'package:flutter/material.dart';
import 'package:MyApp/jsonApi/dataModels/dataModelPlaces.dart';
import 'package:MyApp/jsonApi/parsers/repositoryPlaces.dart';
class ShareAppScreen extends StatefulWidget {
@override
_ShareAppScreenState createState() => _ShareAppScreenState();
}
class _ShareAppScreenState extends State<ShareAppScreen> {
//List<DataModelPlaces> _places = <DataModelPlaces>[];
Iterable<DataModelPlaces> _places = <DataModelPlaces>[];
Iterable<DataModelPlaces> _placesDisplay = <DataModelPlaces>[];
bool _isPlacesLoading = false;
@override
void initState() {
super.initState();
fetchPlaces().then((pvalue) {
setState(() {
_isPlacesLoading = false;
_places.addAll(pvalue); //<- here I have a problem that addAll isn't defined for Iterable
_placesDisplay = _places;
print('User display pin Records: ${pvalue.data!.length}');
var i=0;
while (i < pvalue.data!.length){
print('User display Lat of $i: ${pvalue.data![i].attributes!.latitude}');
print('User display Long of $i: ${pvalue.data![i].attributes!.latitude}');
i ;
}
});
});
}
List stocksList = [
CompanyStocks(name: "Intel Corp", price: 56.96),
CompanyStocks(name: "HP Inc", price: 32.43),
CompanyStocks(name: "Apple Inc", price: 133.98),
CompanyStocks(name: "Microsoft Corporation", price: 265.51)
];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Users List ${_places.length}'),
),
body: SafeArea(
child: Container(
child: ListView.builder(
itemCount: stocksList.length,
itemBuilder: (context, index) {
return Card(
child: Padding(
padding: EdgeInsets.all(10),
child: ListTile(
title: Text(
stocksList[index].name,
style: TextStyle(
fontSize: 20,
),
),
leading: CircleAvatar(
child: Text(
stocksList[index].name[0],
style: TextStyle(fontSize: 15, fontWeight: FontWeight.bold),
),
),
trailing: Text("\$ ${stocksList[index].price}"),
),
),
);
},
),
),
),
);
}
}
class CompanyStocks {
String name;
double price;
CompanyStocks({required this.name,required this.price});
}
最后,我需要一個 DataModelPlaces 的變數“_places”和“_placesDisplay”,我可以用它來代替正在作業但不是 _places / _placesDisplay 的串列“stocksList”
非常感謝
羅馬
uj5u.com熱心網友回復:
Iterable 沒有.addAll.您需要將其轉換為List第一個,以便您可以向其中添加所有元素,例如:
更新:我的錯。toList()將回傳一個新串列!您應該嘗試下面的替代方法
// This wrong since it will return a new list (wrong)
// _places.toList().addAll(pvalue)
或者,您可以將定義更改List為Iterable:
從:
Iterable<DataModelPlaces> _places = <DataModelPlaces>[];
Iterable<DataModelPlaces> _placesDisplay = <DataModelPlaces>[];
到:
List<DataModelPlaces> _places = <DataModelPlaces>[];
List<DataModelPlaces> _placesDisplay = <DataModelPlaces>[];
更新:
正如評論中所討論的,您要確保fetchPlaces回傳 anIterable以便以_places.addAll(pvalue)其他方式使用,如果它是單個物件,請使用_places.add(pvaule).
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/385796.html
下一篇:物件到XML結構
