flutter 对象模型的理解
2023-09-14 09:04:28 时间
如果要传值,传一个int值时就很简单了,类型就是int,如果我们要传好多个值呢,里面有int,也有String,也会有列表,对象,当然我们也可以一个个传,问题是这样子很麻烦,我们可以将这些不同的类型数据堆到一个模型里面,然后传这个模型,也就是我们说的对象了。
//下面一个对象模型
import 'RedEnvLuckyInfo.dart';
import 'RedEnvModel.dart';
//手气王消息model
class LuckKingMessage{
RedEnvModelOwner? ownerInfo;
RedEnvLuckyInfo? luckyInfo;//这个对象里面带着两个对象,里面是基本信息
// LuckKingMessage luckyKingMessage = LuckKingMessage(
// luckyInfo: redEnvLuckyInfo, ownerInfo: redEnvModelOwner);
LuckKingMessage({//有这个构造函数就可以像上面那样赋值了
this.ownerInfo,
this.luckyInfo,
});
LuckKingMessage.fromJson(Map<String, dynamic> json) {//fromJson解析成我们app端可用的数据
ownerInfo = (json['ownerInfo'] != null) ? RedEnvModelOwner.fromJson(json['ownerInfo']) : null;
luckyInfo = (json['luckyInfo'] != null) ? RedEnvLuckyInfo.fromJson(json['luckyInfo']) : null;
}
Map<String, dynamic> toJson() {//tojson转成服务器可用的数据
final data = <String, dynamic>{};
if (ownerInfo != null) {
data['ownerInfo'] = ownerInfo!.toJson();
}
if(luckyInfo!=null){
data["luckyInfo"]=luckyInfo!.toJson();
}
return data;
}
}
用法如下
LuckKingMessage luckyKingMessage = LuckKingMessage(
ownerInfo: RedEnvModelOwner(
nickname: data.ownerUserInfo?.nickname,
userId: data.ownerUserInfo?.userId,
avatar:
data.ownerUserInfo?.avatar ?? data.ownerUserInfo?.avatarThumb,
sex: data.ownerUserInfo?.sex,
avatarThumb:
data.ownerUserInfo?.avatarThumb ?? data.ownerUserInfo?.avatar,
vipLevel: data.ownerUserInfo?.vipLevel,
vipExpirationTime: data.ownerUserInfo?.vipExpirationTime,
birthday: data.ownerUserInfo?.birthday,
),
luckyInfo: RedEnvLuckyInfo(
avatar: data.luckUser?.avatar,
userId: data.luckUser?.userId,
nickname: data.luckUser?.nickname,
redEnvelopeId: data.luckUser?.redEnvelopeId,
currencyQty: data.luckUser?.currencyQty,
createTime: data.luckUser?.createTime));
//最后这里就可以使用luckyKingMessage对象了
WsRoomLinker.instance.sendMessage(
msgType: 4, body: json.encode(luckyKingMessage.toJson()));
或者间接赋值也可以
RedEnvLuckyInfo redEnvLuckyInfo = RedEnvLuckyInfo(
avatar: message.luckUser.avatar,
userId: message.luckUser.userId,
nickname: message.luckUser.nickname,
redEnvelopeId: message.luckUser.redEnvelopeId.toInt(),
currencyQty: message.luckUser.currencyQty);
RedEnvModelOwner redEnvModelOwner = RedEnvModelOwner(
nickname: message.sendUser.nickname,
userId: message.sendUser.userId,
sex: message.sendUser.sex,
avatarThumb: message.sendUser.avatarThumb,
);
LuckKingMessage luckyKingMessage = LuckKingMessage(
luckyInfo: redEnvLuckyInfo, ownerInfo: redEnvModelOwner);
//最后也是同样适用对象
Provider.of<LiveGroupModel>(Global.appContext, listen: false)
.insertMessage(2, luckKingMessage: luckyKingMessage);
相关文章
- flutter系列之:UI layout简介
- 【 源码之间 - Flutter 】 FutureBuilder 使用
- 【Flutter&Flame 游戏 - 肆】精灵图片加载方式
- flutter中多flavors方案以及添加firebase
- flutter packages 发布指北
- Flutter 组件集录 | 3.7 新增 - ContextMenu 菜单
- flutter系列之:创建一个内嵌的navigation
- 【错误记录】Flutter 设备连接显示 Loading... ( 断网 | 删除 flutter/bin/cache/lockfile 文件 )
- 【Flutter】Dart 数据类型 ( dynamic 数据类型 )
- 【错误记录】Flutter 插件报错 ( Methods marked with @UiThread must be executed on the main thread. | 更新最新 SDK )
- 【Flutter】Banner 轮播组件 ( flutter_swiper 插件 | Swiper 组件 )
- 【Flutter】ListView 列表 ( List 集合的 map 方法说明 | 垂直列表 | 水平列表 | 代码示例 )