首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

尝试使用InheritedWidget,但得到的结果为空

InheritedWidget 是 Flutter 中的一个重要概念,用于在 Flutter 应用程序中共享数据和状态。它允许您在整个小部件树中传递数据,而无需显式地将数据传递给每个小部件。

InheritedWidget 是一个抽象类,您可以通过继承它来创建自定义的共享数据类。它有两个主要的方法:updateShouldNotifyinheritFromWidgetOfExactType

updateShouldNotify 方法用于确定是否需要通知依赖于 InheritedWidget 的小部件进行重建。它比较新旧数据是否相等,如果不相等,则通知依赖进行重建。

inheritFromWidgetOfExactType 方法用于获取最近的父级 InheritedWidget,并注册当前小部件作为其依赖。这样,当父级 InheritedWidget 的数据发生变化时,Flutter 将自动重建依赖的小部件。

在使用 InheritedWidget 时,需要注意以下几点:

  1. 创建自定义的 InheritedWidget 类,其中包含要共享的数据和状态。
  2. 在小部件树的顶部使用 InheritedWidget 的子类作为根小部件。
  3. 在需要访问共享数据的小部件中,使用 inheritFromWidgetOfExactType 方法获取最近的父级 InheritedWidget,并注册当前小部件作为其依赖。
  4. updateShouldNotify 方法中,根据数据的变化情况返回 truefalse,以决定是否通知依赖进行重建。

如果您在使用 InheritedWidget 时得到的结果为空,可能是由于以下原因:

  1. 没有正确地将 InheritedWidget 放置在小部件树的顶部。请确保将其作为根小部件,并在需要访问共享数据的小部件中使用 inheritFromWidgetOfExactType 方法。
  2. 没有正确地实现 updateShouldNotify 方法。请确保在数据发生变化时返回 true,以通知依赖进行重建。
  3. 可能存在其他错误导致数据无法正确传递。请检查代码逻辑和可能的错误。

关于 InheritedWidget 的更多信息和示例代码,您可以参考腾讯云的 Flutter 文档和教程:

请注意,以上提供的链接仅供参考,可能需要根据具体情况进行调整。同时,这只是一个示例回答,实际情况可能因具体需求和环境而异。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Django ORM判断查询结果是否,判断django中orm实例

    “select max(id) from tablename”,在使用sqlite3_get_table调用成功后,返回columnum和rownum都为1,即使结果集里无记录也是如此,我们在sqlite3...shell中可以看到该条查询语句在结果时候确实返回了1行1列,不过那个行为空行。...在此种情况下,只能对返回结果集字符串指针(char **dbResult)判断是否来解决结果集是否问题,而不能以columnum和rownum是否0来判断。...//结果集不为。 ? 2、如果查询语句不只有聚合函数,”select * from tablename”,则可以对columnum和rownum判断是0,来判断结果集是否。...以上这篇Django ORM判断查询结果是否,判断django中orm实例就是小编分享给大家全部内容了,希望能给大家一个参考。

    6.9K10

    php如何判断SQL语句查询结果是否

    PHP与mysql这对黄金搭档配合相当默契,偶尔也会遇到一些小需求不知道该怎么做,例如今天要谈到:如何判断sql语句查询结果集是否!...我们以查询学生信息例,来看看究竟如何实现我们需求。...2  李四     男    15  18    2 3  王美丽    女    16  17    5 我们来看看sql查询功能代码,我们要将年龄16岁学生信息都查出来; 以上便是查询功能,当结果集不为时,一切正常,当数据集时,会得到一个空白ul标签, 作为使用者却不知道为什么没有得到数据,此时我们需要给用户一个提示信息,那么我们就需要判断这个结果集是否...php //方法一 获取select结果行数 $rows=mysql_query("select * from `student` where `age`='16';"); if (mysql_num_rows

    3.5K10

    EasyGBS出现录像列表显示有录像实际录像情况如何排查?

    大家知道国标GB28181协议视频平台目前是很多项目团队第一选择,因为国标协议可以级联上下级平台,并且能够直接通过协议进行内网到外网穿透,在一些有外网视频播放需求项目中很受欢迎。...TSINGSEE青犀视频云边端架构产品中EasyGBS平台支持国标协议视频平台,提供RTSP、RTMP、FLV、HLS多种格式进行分发,实现web浏览器、手机浏览器、微信、PC客户端等各种终端无插件直播...今日我们发现EasyGBS日常测试版本运行期间出现录像列表有录像,但是点击进去发现录像情况。 通过排查代码发现,是查询本地录像目录时候设备id和通道id参数传入不匹配导致。...修改代码如下,传入获取ssrcid改为通道id,然后再去获取随机码: ssrc := getSSRC(serial, code, "0") devPath := filepath.Join(mediaserver.GetHlsPath...EasyGBS大家提供了试用版本,供大家测试使用,并且试用版本也支持正常调用API接口进行二次开发,欢迎大家了解和测试。

    1.2K20

    VisualStudio 2019 尝试使用 C# 8.0 新方式 可类型Range异步

    在安装了几天之后,终于有了 VisualStudio 2019 于是再安装了 dotnet core 3.0 预览版,现在可以来尝试使用 C# 8.0 新方式 新 VisualStudio 界面十分清真...可类型 现在可以提示开发者写出可能为代码,如 string 默认可以设置不可 static void Main(string[] args) {...此时就会在设置 string 提示 现在 csproj 需要添加 NullableReferenceTypes 请看下面 ...如果需要在 string 判断时候不使用,可以使用下面的方法 string? str = null; var foo = str?...欢迎转载、使用、重新发布,务必保留文章署名林德熙(包含链接: https://lindexi.gitee.io ),不得用于商业目的,基于本文修改后作品务必以相同许可发布。

    3K20

    pycharm使用anaconda虚拟环境_pycharm解释器

    大家好,又见面了,我是你们朋友全栈君。...环境:conda create –name python37 python=3.7 #创建一个名字python37,版本是python3.7新环境,conda会自动安装3.7最新版本;...如果选择Virtualenv,在第二个箭头地方会在文件创建位置自动生成一个文件夹venv,可以使一个Python程序拥有独立库library和解释器interpreter,而不用与其他Python...程序共享统一个library和interpreter程序间,避免了不同Python程序间互相影响,独立使用一个Python解释器,不会与本地解释器产生影响。...New environment using如果选择conda,可以使用anaconda中创建虚拟环境,有点类似于本地python解释器配置: ---- 显示所有环境: conda env

    1.3K10

    使用V函数,进行变量引用,得到想要结果值 》

    如果你要写java脚本,也不要使用Beanshell任何元件,建议大家使用JSR223开头元件。 原因是:本身这个Beanshell元件代码,消耗资源就非常得多,它性能比较差。...1.做一个变量引用: ${__counter(,)} 参考:${__counter(,)}函数用法 循环次数3次 用户定义变量名称 ${var_${__counter(,)}} 编写http...请求名称 运行结果 我们期望它得到过程是:{var_1} {var_2} 期望结果是:引用变量值。...然后再使用$符号和大括号扩起来,进行了变量引用,这样才得到想要结果值。 http请求:修改了名称和消息体数据 运行成功 3.注意 取样器在运行时候,HTTP请求里名称也会进行代码运算。...${变量名称} 得到变量值。 ${__V(前缀_可变后缀)}得到是这个“前缀_可变后缀”变量名值。 ${__P(属性名称)} 得到是属性名称值。

    2K20

    使用下标给string类型赋值之后,cout输出变量问题。

    今天写创建文件夹时候,怎么创建都不会,反复修改,确定错误是出在了string类型变量上面。...,fileurl_s_cy至始至终,长度也,导致无法正常创建文件夹 明明可以正常输出fileurl_s_cy[i],但是无法正常输出fileurl_s_cy,本以为是’\0’问题,发现加上也无济于事...,fileurl_s_cy整体长度依旧是0 我可以使用std::stringfileurl_s_cy = “www/ccccc” 这种形式正常创建文件夹,就是无法使用下标的赋值方式 经过一番百度,得知是因为声明...fileurl_s_cy时候没有开辟空间,所以无法使用 奇怪是输出fileurl_s_cy[i]居然也不报错。...解决方法如下: 声明时候改为std::string fileurl_s_cy(len,’\0’); 这样就可以正常使用下标赋值,输出以及整体输出 怕忘记,记录与此。

    5K40

    springmvc之使用ModelAttribute避免不允许被修改值更新时

    我们在前端传过来数据username和age,不能修改password,一般情况下,在后端都会新建一个user对象,使用该user对象对数据库进行更新操作。...r那么我们直接进行更新操作,会导致密码变为。 解决方案有以下两种: (1)将所需password用隐藏域传过来。但是这种做法当有很多不必修改字段时很麻烦。...(2)取出数据库中password字段,重新新建user对象password赋上值,这种操作也很麻烦。...(3)使用ModelAttribute注解,不新建一个user对象,而是在原有的基础上进行更新,就可以既更新字段,又可以保留不必更新字段。...对象对应属性; (3)springmvc把上述对象传入目标方法参数;

    1.3K20

    Flutter框架分析(三)-- Widget,Element和RenderObject

    没错,这个ErrorWidget就是当你代码出bug时候显示在屏幕上可怕红底黄字信息。放张截屏大家感受一下。 ? image 这里使用它是因为它是最简单,层级最少一个Widget。...这个函数只是简单执行传入回调然后调用_element.markNeedsBuild()。你看,如果此时_element时候会不会出问题?...更新有四种情况: 新Widget,老Widget也。则啥也不做。 新Widget,老Widget不为。这个Element被移除。 新Widget不为,老Widget。...则调用inflateWidget()以这个Wiget配置实例化一个Element。 新Widget不为,老Widget不为。调用update()函数更新子Element。...这篇文章里只是一些静态说明。下篇文章我会尝试从渲染流水线动态运行角度分析一下Flutter框架是怎么运行

    1.3K10
    领券