useScrollController的安全使用?(Flutter Hooks)



以下代码是否安全?

class SomeWidget extends HookWidget {
@override
Widget build(BuildContext context) {
final controller = useScrollController();
controller.addListener(_someCallback);
return ...;
}
}

我指的是addListener。在这个ResoCoder钩子教程中,他在自定义钩子的initHook函数中添加了监听器。

我知道ResoCoder编写了自定义钩子来处理scrollController。。。我更好奇的是控制器侦听器的行为(我不知道侦听器允许什么和不允许什么(。任何能让我了解它们的资源都会很棒。

谢谢:(

添加监听器等副作用不应直接在build中完成。如果小部件重建,则会导致侦听器再次添加

相反,您可以使用useEffect:

final controller = useScrollController();
useEffect(() {
controller.addListener(_someCallback);
return () => controller.removeListener(_someCallback);
}, [controller]);

最新更新