flutter 对象模型的理解

2023-11-11

如果要传值,传一个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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

flutter 对象模型的理解 的相关文章

  • Sliver Appbar [折叠工具栏] 在 Flutter 中从左到中心动画标题

    这是我的折叠工具栏的构建方法 override Widget build BuildContext context return SafeArea child CustomScrollView controller controller s
  • Flutter 中声明式编程和命令式编程有什么区别?

    最近 我正在寻找一种方法来增强 Flutter 应用程序中屏幕之间的导航 我发现了新的编程概念 陈述性的 and 至关重要的编程 我需要了解更多关于陈述性的 and 至关重要的范例以及 Flutter 中的示例 声明式路由意味着您的应用程序
  • 颤振接触选择器

    我在我的 flutter 应用程序中使用 contact picker 来从手机联系人中获取联系人 当我单击电话簿中的联系人姓名时 应用程序崩溃 这是代码 import package flutter material dart impor
  • “_Smi”不是“bool”类型的子类型 - Flutter MethodChannel

    收到这个奇怪的错误 似乎 MethodChannel 正在转换为 int 而不是 bool 06 07 00 16 26 589 3678 4993 E flutter ERROR topaz lib tonic logging dart
  • 日期时间时区反序列化

    我为我的应用程序开发了一个 Rest API 它以以下格式发送到应用程序日期2018 09 07T17 29 12 02 00 我猜 2 00 代表我的时区作为一个对象的一部分 在我的 Flutter 应用程序中 一旦我反序列化接收到的对象
  • Flutter:设置AppBar的高度

    我怎样才能简单地设置高度AppBar在颤振中 栏的标题应保持垂直居中 即AppBar 您可以使用首选尺寸 https api flutter dev flutter widgets PreferredSize class html clas
  • 避免在 Flutter Web 插件包之外使用纯 Web 库

    我正在构建一个 Flutter 应用程序 并尝试在网络上运行 其中一部分包含一些特定于网络的代码 import dart html as html import package flutter foundation dart class D
  • 飞镖相当于长? [复制]

    这个问题在这里已经有答案了 java的相当于什么longDart 中的数据类型 应该int or long使用 In Java https docs oracle com javase tutorial java nutsandbolts
  • Flutter:列表已弃用? [复制]

    这个问题在这里已经有答案了 升级到最新版本的 flutter 后 我的所有列表都收到弃用警告 List
  • 如何在flutter中绘制自定义形状

    我正在尝试在我的应用程序中绘制这样的自定义形状 尝试使用自定义画家进行绘制 但尚未弄清楚如何获得这种形状 我认为它实际上只是一个带有自定义边框的容器 但甚至不知道从哪里开始 我感兴趣的只是形式 而不是内容 或者 如果有人知道如何绘制底部较薄
  • SingleChildScrollView 内垂直居中的小部件

    我是 Flutter 新手 所以我通过制作一个简单的表单来训练自己 我意识到当我在 iPhone 上调试时 虚拟键盘触发了一个错误 A RenderFlex overflowed by 29 pixels on the bottom 我通过
  • 获取外部存储的权限(file_provider 插件)

    我在使用 flutter 获取 Android 设备上的外部存储权限时遇到一些问题 当我尝试在外部存储中创建目录时 出现此错误 我只是为此示例更改了目录 在我自己的项目中 目录名称不同 I flutter 12727 EXCEPTION C
  • Flutter 图像选择器明确请求许可

    图像选择器包说 无需配置 该插件应该开箱即用 不再需要添加 android requestLegacyExternalStorage true 作为属性 AndroidManifest xml 中的标记 如 image picker 所示
  • 如何在flutter android插件包中处理android生命周期

    我需要知道 android 插件包中 flutter 应用程序视图的当前状态 现在 我观察颤振视图中的状态https docs flutter io flutter widgets WidgetsBindingObserver class
  • Dart,无法调用Generic的方法

    我正在尝试创建一个抽象数据模型 在其中传递数据并输入 a 然后返回列表 但是当我无法调用时T fromJson 方法 注意传递类型有方法fromJson class DataList
  • 如何在不影响背景内容的情况下弯曲底部导航栏角?扑

    我创建了一个带有颤动的自定义底部导航栏 但我仍然可以看到白色填充了弧角后面的背景 我想看看背景内容 这就是底部导航栏的样子 正如你所看到的 角落里充满了白色 这是我的底部导航栏代码 bottomNavigationBar Container
  • 运行 flutter doctor 吐出错误:标准错误:致命:坏对象 HEAD

    我已经从官方网站安装了 Flutter 和 Android Studio 我是 Git GitHub 移动开发和 Android 开发的新手 我试图在命令提示符 Windows 10 中运行 flutter doctor 命令 但是 它会以
  • Flutter blue plus 在发布模式下不起作用

    flutter run release Launching lib main dart on motorola one vision in release mode Running Gradle task assembleRelease 3
  • 如何在 Flutter 中显示 Android Activity?

    我目前正在开发一个在 flutter 中使用 Google Maps Api 的应用程序 由于支持不完整 我只能使用静态地图 点击它会导致 Android 活动没有用 我需要的是一张地图 我可以在其中搜索位置并向该位置添加标记 那么是否可以
  • 当 AppLifeCycleState.detached 被调用时?

    I ve class PageState extends State

随机推荐

  • 完整NFT Web开发

    完整NFT Web开发课程 自互联网早期以来 NFT 作为最具颠覆性的技术 区块链 的一部分 正在改变世界开展业务的方式 你可以构建和学习如何使用它们来塑造现代数字艺术 游戏 和网络应用程序 本课程教你如何从头开始深入构建 NFT 市场 以
  • 解决Nginx的location中root与alias区别——配置找不到路径的原因

    要理解root与alias的区别 例一 注意location中的配置 server listen 8080 server name localhost location root html index index html index ht
  • Java dom4j如何获取,添加,删除,查找,设置Element属性呢?

    转自 Java dom4j如何获取 添加 删除 查找 设置Element属性呢 下文讲述dom4j操作Element属性的方法分享 如下所示 取得某节点下的某属性 Element root document getRootElement A
  • 24.绳子切割

    目录 题目 Description Input Output 思路 注意事项 C 完整代码 题目 Description 有N条绳子 它们的长度分别为Li Li都是正整数 如果从它们中切割出K条长度相同的绳子 绳子的长度为整数 这K条绳子每
  • Windows7不再卡五叶草,更新了bootx64.efi和bootmgfw.efi文件,支持安全启动,不用关闭安全启动和打开csm支持.

    如题 微软最近为Windows7的64位系统更新了bootx64 efi和bootmgfw efi文件 然后Windows7的64位系统就支持了更新的平台 而且支持安全启动 不用关闭安全启动和打开csm支持 已在Intel10代和12代平台
  • Gitlab----设置页面语言为简体中文

    原文链接 1 简介 gitlab为每个用户提供了个性化设置 即用户登录之后设置页面的语言之后 并不影响其他人的页面的语言 如此就解决了有的人喜欢看中文界面 有的人喜欢看英文界面 当然如果会其他国语言也可以同样设置自己喜欢的语言 2 用户登录
  • Unity动画控制

    1 Trigger控制动画状态重复播放
  • 判断一个对象是否存在某个属性

    一 OBJ hasOwnProperty 属性 返回一个布尔值 只判断该对象自身的属性 不会去查找原型链上的属性 二 OBJ 或者 OBJ 去访问该属性 如果不存在就会返回undefined 这个方法可以查找原型链上的属性 这里有一个特殊情
  • ssh免密登录,各种权限设置都无效的解决办法!

    如果失败 有可能是以下原因 1 权限问题 这个还得试试 有可能你的权限真的不对 ssh目录 以及 home 当前用户 需要700权限 参考以下操作调整 sudo chmod 700 ssh sudo chmod 700 home 当前用户
  • Python打乱数据集

    在随机划分训练集和测试集时 需要随机划分 使用这种方法 一 打乱索引 import random random seed seed index i for i in range len x train random shuffle inde
  • linux定时删除指定文件shell脚本

    vi delete sh 输入以下内容 bin bash data path home test logs expire time 1 function deletefiles for file in find 1 name Default
  • vscode安装node-snippets

    vscode安装node snippets扩展后没有代码提示问题 安装好扩展后 输入node后仍没有代码提示 需要观察自己的代码所在文件路径是否全是英文路径 然后大多都以了 如果还有不行 就尝试在设置里面输入prevent 取消下面的选中
  • windows下如何安装高版本的jaxlib

    https zhuanlan zhihu com p 498404068
  • Vue2手捏Vuex插件

    一 展示数据 state 1 plugins Vuex js let Vue class Store constructor options 1 保存数据 通过 vue 中的 data 是响应式 this vm new Vue data s
  • C语言百日刷题第九天

    前言 今天是刷题第9天 放弃不难 但坚持一定很酷 快来跟我一起刷题吧 加油 一起努力进步 C语言百日刷题第九天 前言 76 计算偶数的所有质因子 77 提取不重复的整数 78 二进制中1的个数 79 猴子分桃 80 百钱买百鸡 76 计算偶
  • Typora-Markdown 文本编辑器

    图片 md test png img src md test png height 300 时序图 实线 gt gt gt 虚线 gt gt gt 背景 rect rgb 244 244 255 end 列子 mermaid sequenc
  • SSM商城项目实战:客户管理

    SSM商城项目实战 客户管理 1 项目背景和需求分析 在一个电商平台中 客户管理是非常重要的一环 通过对客户信息的管理 可以更好地了解客户需求 提供个性化的服务 增强客户满意度 本项目旨在实现一个简单的客户管理功能 包括客户信息的添加 修改
  • react组件权限控制+路由权限+路由懒加载

    组件控制 permission js import React useEffect useState useContext from react const PermissionContext React createContext per
  • [~/vulhub]/log4j/CVE-2021-44228-20221225

    vulhub log4j CVE 2021 44228 kwkl kwkl vulhub cd log4j CVE 2021 44228 kwkl kwkl vulhub log4j CVE 2021 44228
  • flutter 对象模型的理解

    如果要传值 传一个int值时就很简单了 类型就是int 如果我们要传好多个值呢 里面有int 也有String 也会有列表 对象 当然我们也可以一个个传 问题是这样子很麻烦 我们可以将这些不同的类型数据堆到一个模型里面 然后传这个模型 也就