Flutter实时动态UI刷新、数据交互

setState()简介

setState() 函数的作用是标记 StatefulWidget 中的 State 发生变化,需要重新构建 UI。即让Flutter架构自动实时刷新UI。
当 StatefulWidget 的 State 发生变化时,调用 setState() 通知 Flutter 框架,Flutter 框架接受到通知后,会重新调用 StatefulWidget 的 build() 方法来构建 UI。

例子

举个简单的例子:

class Counter extends StatefulWidget {
    
    
  
  State<StatefulWidget> createState() {
    
    
    return _CounterState();
  }
}

class _CounterState extends State<Counter> {
    
    
  int _count = 0;
  
  
  Widget build(BuildContext context) {
    
    
    return Text('Count: $_count');
  }
  
  void increment() {
    
    
    setState(() {
    
    
      _count++;
    });
  }
}

这里有一个 StatefulWidget Counter,里面维护了一个状态 _count。当我们调用 increment() 方法时,调用了 setState() 通知 Flutter 框架 _count 已经变化,Flutter 框架会重新调用 build() 方法构建 UI,更新 Text 的内容。
所以 setState() 的主要作用是当 StatefulWidget 的状态(State)发生变化时,通知 Flutter 框架去重新构建 UI 以更新界面。
通过使用setState()函数,可以在有状态的小部件中管理和更新状态,以实现动态的UI交互和数据更新。

详细介绍

  1. 功能: setState()函数用于通知Flutter框架,小部件的状态已经发生了改变,并请求重新构建UI。它会触发小部件的build()方法,使小部件重新渲染,以反映最新的状态。

  2. 使用方式: setState()函数是State类的一个方法。在需要更新状态的地方,可以通过调用setState(() { … })来包裹代码块。在代码块内部,可以进行对状态的修改操作。

  3. 异步操作: setState()函数是一个异步操作,它会将状态更新请求添加到Flutter的事件队列中,然后继续执行后续的代码。一旦当前帧的构建完成,Flutter框架会调用build()方法来重新构建小部件。

  4. 更新范围: setState()函数只会更新调用它的小部件及其子树。因此,为了更新整个应用程序的状态,通常需要在根小部件的上层使用setState()函数。

  5. 不可变性: Flutter框架通过对比前后两个状态对象来确定是否需要重新构建小部件。因此,在使用setState()函数时,应确保更新后的状态对象是一个新的不可变对象,而不是原地修改现有对象。

  6. 状态管理: setState()函数通常与StatefulWidget一起使用,用于管理有状态的小部件。通过调用setState()函数来更新状态,可以触发小部件的重建,从而实现根据状态的变化来更新UI的效果。

猜你喜欢

转载自blog.csdn.net/yikezhuixun/article/details/130578633