我有一个statefull小部件,我将一个整数传递给它。我想在传递给小部件的值发生变化时执行一个方法
class Test extends StatefulWidget {
final String item;
const Test({
Key? key,
required this.item,
}) : super(key: key);
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test> {
List<String> hh = [];
@override
void initState() {
super.initState();
print("init state value is ${widget.item}");
}
@override
Widget build(BuildContext context) {
return Container();
}
void getDataItems() {
print("value passed is ${widget.item}");
setState(() {
hh = [widget.item];
});
}
}
因此,在上面的内容中,我想检测传递给小部件的字符串项的值何时发生变化,并调用方法getDataItems
,该方法稍后将更新列表hh。我如何检测传递给statefull小部件的值何时发生变化?
2条答案
按热度按时间mccptt671#
你可以检查useEffect,它是基于React钩子的useEffect。
或者您可以硬编码它。
创建其他整数:
late int lastCalledInteger;
并在构建中检查以下内容:
pbwdgjma2#
你可以简单地在
State
上覆盖didUpdateWidget
,以获得传入参数的每一次更改的通知。如果你有多个参数,你当然需要更改更改的内容。为此,didUpdateWidget
提供了oldWidget
作为唯一的参数。从文档中:
每当小部件配置更改时调用。
[...]
覆写这个方法,以便在Widget变更时回应(例如,启动隐含动画)。