gpt4 book ai didi

dart - 类型转换中的List <动态>' is not a subtype of type ' List '

转载 作者:行者123 更新时间:2023-12-03 04:04:19 28 4
gpt4 key购买 nike

我正在尝试创建动态下拉列表,该列表的值是使用微服务从查找表之一填充的,但是直到现在为止我还没有成功地使它起作用。因为我对 Dart / flutter 是完全陌生的
所以任何人都可以在下面的代码中确定我做错了什么

以下代码的用于调用Web服务

Future<List<CountryDropDownList>> getCountriesDetails(String url) async{
HttpClient httpClient = new HttpClient();
HttpClientRequest request = await httpClient.getUrl(Uri.parse(url));
// request.headers.set('content-type', 'application/json');
print("request data "+request.toString());
HttpClientResponse microServicesResponse= await request.close();
String microServicesResponseString = await microServicesResponse.transform(utf8.decoder).join();
final parsed = await json.decode(microServicesResponseString).cast<Map<String, dynamic>>();
httpClient.close();
print("Data Recieved "+microServicesResponseString.toString());
return parsed
.map<CountryDropDownList>(
(json) => CountryDropDownList.fromJson(json))
.toList();
}

这是我的对象类型
class CountryDropDownList{

String countryName;
List<StateDropDownList> stateDropDownList;


CountryDropDownList({this.countryName, this.stateDropDownList});

factory CountryDropDownList.fromJson(Map<String, dynamic> json) {
return CountryDropDownList(
countryName: json['countryName'] as String,
stateDropDownList: json['states'] as List<StateDropDownList>,
);
}
}

,仅用于显示截至现在运行的代码
    class CenterFoundationSubmission extends StatefulWidget  {
CenterFoundationSubmission({Key key}) : super(key: key);

@override
_CenterFoundationSubmissionState createState() => new _CenterFoundationSubmissionState();
}

class _CenterFoundationSubmissionState extends State<CenterFoundationSubmission> {

NetworkUtil _netUtil = new NetworkUtil();

var url = "SomeUrl";

@override
void initState() {
super.initState();
setState(() {
});
}


@override
Widget build(BuildContext context) {
var futureBuilder = new FutureBuilder(
future: _getData(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
case ConnectionState.waiting:
return new Text('loading...');
default:
if (snapshot.hasError)
return new Text('Exception here is : ${snapshot.error}');
else
return createView(context, snapshot);
}
},
);

return new Scaffold(
appBar: new AppBar(
title: new Text("Center Foundation"),
),
body: futureBuilder,
);

}

Future<List<CountryDropDownList>> _getData() async {
List<CountryDropDownList> values = new List<CountryDropDownList>();
values.addAll(_netUtil.getCountriesDetails(url) as List<CountryDropDownList>);

/*Error Added here , i am getting error while casting list to my object type*/


await new Future.delayed(new Duration(seconds: 10));

return values;
}

Widget createView(BuildContext context, AsyncSnapshot snapshot) {
List<CountryDropDownList> values = snapshot.data;
return new ListView.builder(
itemCount: values.length,
itemBuilder: (BuildContext context, int index) {
return new Column(
children: <Widget>[
new ListTile(
title: new Text(values[index].countryName),
subtitle: new Text(values[index].stateDropDownList[index].statesName),
trailing: new Text(values[index].stateDropDownList[index].districtDropDownList[index].districtsName),
),
new Divider(height: 2.0,),
],
);
},
);
}
}

我已经做了什么,我尝试以多种方式调用webservices,尝试使用JSON字符串响应直接转换服务响应,可能是我尝试过的事情。

您能否在这里提供帮助,我们将不胜感激。

最佳答案

你可以尝试List.from()构造函数吗?这是相同的链接:

https://api.dart.dev/stable/2.8.4/dart-core/List/List.from.html

      stateDropDownList: List<StateDropDownList>.from(json['states']);

关于dart - 类型转换中的List <动态>' is not a subtype of type ' List <Obj>',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51701620/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com