gpt4 book ai didi

android - 将数据从一个屏幕发送到另一个屏幕 flutter

转载 作者:行者123 更新时间:2023-11-29 05:59:02 26 4
gpt4 key购买 nike

我正在尝试将数据从一个屏幕传递到另一个屏幕。

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)));
}
}
}

通过使用上面的代码,我尝试发送数据,但遇到了诸如类型“List”不是类型转换中“SubCategoryData”类型的子类型的问题”

出现错误,甚至我不知道如何发送带有索引值的数据。请告诉我。

下面是我的ChewieDemo类(class):这里我尝试从另一个类接收数据。

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';
}
}

最佳答案

<强>1。添加依赖

开始之前,您需要将shared_preferences插件添加到pubspec.yaml文件中:

content_copy
dependencies:
flutter:
sdk: flutter
shared_preferences: "<newest version>"

<强>2。保存数据

要保留数据,请使用 SharedPreferences 类提供的 setter 方法。 Setter 方法可用于各种基本类型,例如 setInt、setBool 和 setString。

Setter 方法做两件事:首先,同步更新内存中的键值对。然后,将数据保存到磁盘。

// obtain shared preferences
final prefs = await SharedPreferences.getInstance();

// set value
prefs.setInt('counter', counter);

<强>3。读取数据

要读取数据,请使用 SharedPreferences 类提供的适当 getter 方法。对于每个 setter 都有一个相应的 getter。例如,您可以使用 getInt、getBool 和 getString 方法。

final prefs = await SharedPreferences.getInstance();

// Try reading data from the counter key. If it does not exist, return 0.
final counter = prefs.getInt('counter') ?? 0;

<强>4。删除数据

要删除数据,请使用remove方法。

content_copy
final prefs = await SharedPreferences.getInstance();

prefs.remove('counter');

关于android - 将数据从一个屏幕发送到另一个屏幕 flutter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54862586/

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