dart – Force Flutter重绘所有小部件

dart – Force Flutter重绘所有小部件,第1张

概述有没有办法强制Flutter重绘所有小部件(例如在区域设置更改后)? (Stackoverflow不允许我提交,除非问题中有足够的文字). 这种类型的用例,你有孩子可以读取的数据,但你不想显式地将数据传递给你所有孩子的构造函数参数,通常会调用一个InheritedWidget. Flutter将自动跟踪哪些小部件依赖于数据并重建已更改的树的部分.有一个 LocaleQuery小部件,旨在处理区域设 有没有办法强制Flutter重绘所有小部件(例如在区域设置更改后)?

(Stackoverflow不允许我提交,除非问题中有足够的文字).

解决方法 这种类型的用例,你有孩子可以读取的数据,但你不想显式地将数据传递给你所有孩子的构造函数参数,通常会调用一个inheritedWidget. Flutter将自动跟踪哪些小部件依赖于数据并重建已更改的树的部分.有一个 LocaleQuery小部件,旨在处理区域设置更改,您可以看到它在 Stocks example app中的使用方式.

简而言之,这就是Stocks正在做的事情:

>在根小部件(在本例中为StocksApp)上进行回调以处理区域设置更改.此回调执行一些 *** 作,然后返回LocalequeryData的自定义实例
>将此回调注册为MaterialApp构造函数的onLocaleChanged参数
>需要区域设置信息的子窗口小部件使用Localequery.of(context).
>当语言环境发生更改时,Flutter仅重绘具有依赖于语言环境数据的小部件.

如果要跟踪区域设置更改以外的其他内容,可以创建自己的扩展InheritedWidget的类,并将其包含在应用程序根目录附近的层次结构中.它的父级应该是StatefulWidget,其键设置为子级可访问的GlobalKey. StatefulWidget的状态应该拥有您要分发的数据,并公开用于更改调用setState的方法.如果子窗口小部件想要更改状态数据,则可以使用全局键获取指向State(key.currentState)的指针并在其上调用方法.如果他们想要读取数据,他们可以调用inheritedWidget子类的静态(context)方法,这将告诉Flutter这些小部件需要在State调用setState时重建.

总结

以上是内存溢出为你收集整理的dart – Force Flutter重绘所有小部件全部内容,希望文章能够帮你解决dart – Force Flutter重绘所有小部件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1004056.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存