【问题标题】:Build child on object parameter change在对象参数更改上构建子级
【发布时间】:2020-11-29 14:05:04
【问题描述】:

我有一个无状态的CharacterWidget,其中包含孩子HeadWidgetTorsoWidget。为简单起见,我们假设它只有HeadWidgetHeadWidget 本身是一个有两个孩子的无状态小部件:HelmetWidgetFaceWidget。这是树的样子:

CharacterWidget 使用 Provider 为其子对象提供 CharacterObject - 包含头盔类型和皮肤复杂性等内容..

问题是:character.SkinComplexity 发生变化时,我希望FaceWidgetBodyWidget 重建,而不是HelmetWidgetChestplate。反之亦然,如果 character.helmet 更改:我只想重建 HelmetWidget 目前,如果我更改 CharacterObject,一切都会重建(基于构建方法中的日志)。

只有当character.SkinComplexity 发生更改时,我才能告诉小部件重建?

附带问题:如果所有这些小部件只是显示并向图像应用过滤器,我是否认为所有这些小部件都应该是无状态的?

【问题讨论】:

  • 如何消费提供者?你使用 Provider.of(context) 还是 context.watch()?
  • 我在父级上使用 changeNotifierProvider 并与 Provider.of() 一起使用..
  • 我不应该吗? @ddalbosco

标签: flutter flutter-provider


【解决方案1】:

我认为您正在搜索的是 Selector 小部件和 context.select() 函数。它们对于优化重建非常有用,尤其是在使用 ChangeNotifier 时。

【讨论】:

    【解决方案2】:

    使用 context.watch().property 代替 Provider.of(context).property。我遇到了和你类似的问题,我通过使用这种语法解决了,通过进行一些测试,我意识到使用 Provider.of() 就像观察所有属性的变化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-12
      相关资源
      最近更新 更多