【发布时间】:2019-07-18 15:26:36
【问题描述】:
我正在尝试将数据从一个屏幕传递到另一个屏幕。
List<SubCategoryData>categoryNames = new List<SubCategoryData>();
List<String>categorieslist = [];
bool isFirst=true;
Future<SubCategoryModel>fetchCategories(BuildContext context) async {
String url = "http://106.51.64.251:380/onnet_api/subcatListByCategory.php";
var body = new Map<String,String>();
body['publisherid']= 102.toString();
body['tag'] = "category";
body['subtag']= "list";
body['parentId'] = 10.toString();
http.Response res = await http.post(url,body: body);
final categoryjsondata = json.decode(res.body);
var map = Map<String,dynamic>.from(categoryjsondata);
var categoryResponse = SubCategoryModel.fromJson(map);
if(res.statusCode == 200){
print('category Response: $categoryResponse');
if(categoryResponse.status == 1){
//final categoryModel = json.decode(res.body);
var data = categoryjsondata['data']as List;
print('category data: $data');
/* for(var model in categorieslist){
categoryNames.add(new SubCategoryData.fromJson(model));
}*/
/* SharedPreferences prefs = await SharedPreferences.getInstance();
print("cat List Size: $categories");
prefs.setStringList("categorylist", categories);*/
Navigator.push(context, MaterialPageRoute(builder: (context)=> ChewieDemo(imageData: images[0],
categoryData:data)));
}
}
}
通过使用上面的代码,我正在尝试发送数据,但我遇到的问题是 type 'List' is not a subtype of type 'SubCategoryData' in type cast"
出错了,我什至没有知道如何发送带有索引值的数据。请告诉我。
下面是我的 ChewieDemo 课程: 这里我试图从另一个类接收数据。
class ChewieDemo extends StatefulWidget {
final Datum imageData;
final SubCategoryData categoryData;
ChewieDemo({this.title = 'Player',Key key,@required this.imageData,@required this.categoryData}): super(key:key);
final String title;
@override
State<StatefulWidget> createState() {
return _ChewieDemoState();
}
}
class _ChewieDemoState extends State<ChewieDemo> {
TargetPlatform _platform;
VideoPlayerController _videoPlayerController1;
VideoPlayerController _videoPlayerController2;
ChewieController _chewieController;
@override
void initState() {
super.initState();
print('url player :${widget.imageData.dataUrl}');
print(widget.categoryData);
// 'https://www.sample-videos.com/video123/mp4/480/big_buck_bunny_480p_20mb.mp4'
_videoPlayerController1 = VideoPlayerController.network('${widget.imageData.dataUrl}');
_chewieController = ChewieController(
videoPlayerController: _videoPlayerController1,
aspectRatio: 3 / 2,
autoPlay: true,
looping: true,
// Try playing around with some of these other options:
// showControls: false,
// materialProgressColors: ChewieProgressColors(
// playedColor: Colors.red,
// handleColor: Colors.blue,
// backgroundColor: Colors.grey,
// bufferedColor: Colors.lightGreen,
// ),
// placeholder: Container(
// color: Colors.grey,
// ),
// autoInitialize: true,
);
}
这是 SubCategoryData 的模型类。
class SubCategoryData {
int id;
int parentId;
String name;
int contentCount;
String createdAt;
int status;
SubCategoryData({
this.id,
this.parentId,
this.name,
this.contentCount,
this.createdAt,
this.status,
});
factory SubCategoryData.fromJson(Map<String, dynamic> json) => new SubCategoryData(
id: json["id"],
parentId: json["parent_id"],
name: json["name"],
contentCount: json["content_count"],
createdAt: json["createdAt"],
status: json["status"],
);
Map<String, dynamic> toJson() => {
"id": id,
"parent_id": parentId,
"name": name,
"content_count": contentCount,
"createdAt": createdAt,
"status": status,
};
@override
String toString() {
// TODO: implement toString
return '$id $parentId $name $contentCount';
}
}
【问题讨论】:
-
你能把 ChewieDemo 类的代码展示一下吗?
-
更新了我的问题。
-
你不能使用:categoryData:(categoryData)as SubCategoryData) 因为categoryData是list类型,不能转换,什么是SubCategoryData类?显示它的代码
-
它是一个模型类
-
好的,如果您想显示模型类的代码,那么您无法将列表转换为此模型类的问题,以便我可以帮助您将列表中的数据填充到模型中类