我应该自己处置 ValueNotifier 对象吗?保持原样安全吗?

Posted

技术标签:

【中文标题】我应该自己处置 ValueNotifier 对象吗?保持原样安全吗?【英文标题】:Should I dispose ValueNotifier object my self? Is it safe to leve it as it is? 【发布时间】:2020-05-30 21:16:13 【问题描述】:

我有一个自定义无状态小部件,它有一个 ValueNotifier 参数作为构造函数参数。

请参阅下面的 sn-p。

class MyWidget extends StatelessWidget 
  @override
  Widget build(BuildContext context) 
    return FlatChoiceChipList(
      choiceList: ["first item","second item","third item"],
      selectedIndex: ValueNotifier<int>(0),
      onSelected: (index) ,
    );
  

嗯,正如你在上面的sn-p中看到的,在build方法中我创建了一个ValueNotifier对象,以后没有dispose它。

    在构建方法中创建 ValueNotifier 是否安全? 我应该在父 Stateful Widget 中创建 ValueNotifier 并在父 Stateful Widget 被释放时自行释放它吗??

【问题讨论】:

【参考方案1】:

1.如果你愿意,你可以,但你为什么不在你的 FlatChoiceChipList 小部件中声明它?

2.我相信只有在你添加监听器的情况下。这是 dispose 方法:

@mustCallSuper
void dispose() 
  assert(_debugAssertNotDisposed());
  _listeners = null;

但是,当您不再需要它时,最好将其丢弃。

【讨论】:

以上是关于我应该自己处置 ValueNotifier 对象吗?保持原样安全吗?的主要内容,如果未能解决你的问题,请参考以下文章

需要用 popToRootViewController 发布中间视图吗?

Flutter ValueNotifier实际开发使用

我需要处置cubit实例吗?

我应该处置互斥锁吗?

是否应该处置 UdpClient?

属性列表应该由它自己的模型对象管理吗?