如果要传值,传一个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);