为什么在一个state中我们需要didUpdateWidget方法?
无论如何都会调用build方法,我们不能在那里添加逻辑吗?
唯一的区别是我们没有对旧widget的引用作为参数,或者我有遗漏吗?
为什么在一个state中我们需要didUpdateWidget方法?
无论如何都会调用build方法,我们不能在那里添加逻辑吗?
唯一的区别是我们没有对旧widget的引用作为参数,或者我有遗漏吗?
是的,当屏幕上的某些内容重新加载时,您可以在构建方法中实现逻辑。每当相应的小部件被重新创建时,都会调用didUpdateWidget
。
但是,不同之处在于,当我们可以比较某些值并根据这些值在应用程序上做出决策时。
例如:
class MyApp extends StatefulWidget {
int getInitialValue() {
return 1;
}
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
int _currentValue = 10;
@override
void didUpdateWidget(MyApp oldWidget) {
if(oldWidget.getInitialValue() != _currentValue) {
// Perform animation
// Fetch data from server
}
}
}
didUpdateWidget()
的示例,我们可以在许多其他情况下执行类似的操作。