今天写post请求时候,有数据需要需要解析。
当时看的时候post解析很简单,大概是这个样子
输出是:

这样看也就这样,就看下一个功能了。
今天没事准备写个Dome。
先写一个简单的请求:
推荐一下flutter根据返回值生成j实体
javiercbk.github.io/json_to_dar…
这个可以把请求的数据生成实体,很方便。
请求方法如下:
try {
Response response = await dio.post(url);
if (response.statusCode == 200) {
Global.setdata("phone", namecontroller.text.toString());
var jsontext = response.data;
print(jsontext);
Map<String, dynamic> map = json.decode(jsontext);
LoginUser user = LoginUser.fromJson(map);
_updateText(user.message);
} else {
print(response.statusCode);
}
} catch (exception) {
print(exception);
}执行
[ +12 ms] I/flutter ( 6816): type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'String'
意思是类型不对,这是我的实体类
class LoginUser {
int code;
String message;
Data data;
LoginUser({this.code, this.message, this.data});
LoginUser.fromJson(Map<String, dynamic> json) {
code = json['code'];
message = json['message'];
data = json['data'] != null ? new Data.fromJson(json['data']) : null;
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['code'] = this.code;
data['message'] = this.message;
if (this.data != null) {
data['data'] = this.data.toJson();
}
return data;
}
}
class Data {
String versionId;
String appId;
String appName;
String versionCode;
String url;
String upContent;
String fileName;
String alreadyTest;
String alreadyUpdate;
String upVersionId;
String useragent;
int upTime;
String qrcodeUrl;
int ctime;
Data(
{this.versionId,
this.appId,
this.appName,
this.versionCode,
this.url,
this.upContent,
this.fileName,
this.alreadyTest,
this.alreadyUpdate,
this.upVersionId,
this.useragent,
this.upTime,
this.qrcodeUrl,
this.ctime});
Data.fromJson(Map<String, dynamic> json) {
versionId = json['versionId'];
appId = json['appId'];
appName = json['appName'];
versionCode = json['versionCode'];
url = json['url'];
upContent = json['upContent'];
fileName = json['fileName'];
alreadyTest = json['alreadyTest'];
alreadyUpdate = json['alreadyUpdate'];
upVersionId = json['upVersionId'];
useragent = json['useragent'];
upTime = json['upTime'];
qrcodeUrl = json['qrcodeUrl'];
ctime = json['ctime'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['versionId'] = this.versionId;
data['appId'] = this.appId;
data['appName'] = this.appName;
data['versionCode'] = this.versionCode;
data['url'] = this.url;
data['upContent'] = this.upContent;
data['fileName'] = this.fileName;
data['alreadyTest'] = this.alreadyTest;
data['alreadyUpdate'] = this.alreadyUpdate;
data['upVersionId'] = this.upVersionId;
data['useragent'] = this.useragent;
data['upTime'] = this.upTime;
data['qrcodeUrl'] = this.qrcodeUrl;
data['ctime'] = this.ctime;
return data;
}
}这种要怎么改,迅速百度,结果是
Map map = new Map<String, dynamic>.from(jsontext);
LoginUser user = LoginUser.fromJson(map);改成这种就OK了。
flutter已经发布了好久,以前看过一段时间,但都是简单的使用了解就放弃了,这次不行了,不看下份工作不好找呀,人要未雨绸缪。现在使用flutter开发的多了,有问题也很好找到解决方式。
-菜鸡程序员