Flutter 为什么在statefull小部件中需要didUpdateWidget和build方法?
为什么我们需要状态中的didUpdateWidget方法?Flutter 为什么在statefull小部件中需要didUpdateWidget和build方法?,flutter,Flutter,为什么我们需要状态中的didUpdateWidget方法? 无论如何都要调用Build,我们不能在那里添加逻辑吗? 唯一的区别是,我们没有将旧的小部件引用为参数,或者我遗漏了什么吗?是的,当屏幕上重新加载某些内容时,您可以在构建方法中实现逻辑。 每次重新创建相应的小部件时都会调用didUpdateWidget 但是,不同之处在于,当我们可以比较一些值并基于这些值时,我们可以在应用程序上做出决定 示例: class MyApp extends StatefulWidget { int getI
无论如何都要调用Build,我们不能在那里添加逻辑吗?
唯一的区别是,我们没有将旧的小部件引用为参数,或者我遗漏了什么吗?是的,当屏幕上重新加载某些内容时,您可以在构建方法中实现逻辑。 每次重新创建相应的小部件时都会调用
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
}
}
}
类MyApp扩展StatefulWidget{
int getInitialValue(){
返回1;
}
@凌驾
_MyAppState createState()=>\u MyAppState();
}
类MyAppState扩展了状态{
int _currentValue=10;
@凌驾
void didUpdateWidget(MyApp oldWidget){
if(oldWidget.getInitialValue()!=\u currentValue){
//表演动画
//从服务器获取数据
}
}
}
以上只是我们如何使用
didUpdateWidget()
的一个例子,我们可以为许多其他场景做类似的事情好的,现在我明白我可以使用它做什么了。当小部件发生更改时,会调用父小部件的原因,例如didUpdateWidget和build。如果调用state的setState方法,则只调用build。build可以被多次调用,在build方法中订阅流或创建动画是没有意义的。谢谢:)