我正在将functional_widget
包与flutter_hooks
一起使用。我需要为事件处理程序创建闭包,我想知道什么是正确的方法:
@hwidget
Widget foo1() {
final state = useState(0);
final onPressed = () {
state.value++;
};
return RaisedButton(onPressed: onPressed);
}
vs
@hwidget
Widget foo2() {
final state = useState(0);
final onPressed = useMemoized(() => () {
state.value++;
});
return RaisedButton(onPressed: onPressed);
}
我是通过使用useMemomized
来节省成本还是使其变得更糟?有更好的方法吗?
答案 0 :(得分:2)
可以,但这不是必需的。
另一方面,正确执行此操作至关重要:
final state = useState(0);
final cb = useMemoized(() => () {
state.value++;
}, [state]);
不这样做可能会导致您的闭包指向先前的参数,而不是新的参数。