4

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

请参阅下面的片段。

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

​</p>

好吧,正如您在上面的代码片段中看到的那样,在构建方法中,我创建了一个 ValueNotifier 对象,并且稍后不会释放它。

  1. 在 build 方法中创建 ValueNotifier 是否安全?
  2. 我应该在父 Stateful Widget 中创建 ValueNotifier 并在父 Stateful Widget 被处置时自行处置它吗?
4

1 回答 1

0

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

2.我相信只有在你添加听众的情况下。这是处置方法:

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

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

于 2020-05-28T04:27:58.900 回答