根据flutter_hooks中对useState的描述:
...
/// On the first call, it initializes [ValueNotifier] to [initialData]. [initialData] is ignored
/// on subsequent calls.
...
我想使用useState
来改变当前widget的状态,同时我还想在从父级改变值时忽略initialDataNOT,如何实现?
class MyHookWidget extends HookWidget {
const MyHookWidget({required this.valueFromParent, super.key});
final int valueFromParent;
@override
Widget build(BuildContext context) {
final state = useState<int>(valueFromParent);
...
1条答案
按热度按时间nkoocmlb1#
我通过使用useEffect或useValueChanged来跨越它,这就像StatefulWidget的didUpdateWidget。
∮ ∮ ∮ ∮
对副作用有用,并可选择性地消除它们。
useEffect在每次构建时都会被同步调用,除非指定了keys。在这种情况下,只有当keys中的任何值发生更改时,useEffect才会再次被调用。
它接受一个效果回调并同步调用它。该效果可以选择返回一个函数,当再次调用该效果或释放该小部件时,将调用该函数。
默认情况下,除非指定了keys,否则在每次构建调用时都会调用effect。在这种情况下,effect在第一次useEffect调用时调用一次,并且每当keys中的某些内容发生更改时/
示例:
∮ ∮ ∮ ∮
监视一个值并在该值更改时触发回调。
useValueChanged接受valueChange回调,并在值更改时调用它。第一次useValueChanged调用时不会调用valueChange。
useValueChanged也可用于插值每当使用不同的值调用useValueChanged时,调用valueChange。useValueChanged返回的值是valueChange的最新返回值或null。
示例: