如果使用setState方法去刷新,会重新build一遍,会比较耗资源,可能会卡顿。局部刷新效果,主要的状态管理有ProviderBlocStreamBuild等。小项目使用StreamBuild就够了。

  1. 步骤1:初始化一个StreamController<可以是 int string… 一般是model>
    final StreamController<String> _streamController = StreamController<String>();
  2. 步骤2.dispose()函数中关流,不关流会消耗资源,同时会引起内存泄漏
    _streamController.close();
  3. 步骤3.使用StreamBuilder构造器
    StreamBuilder<String>(  // 监听Stream,每次值改变的时候,更新Text中的内容
        stream: _streamController.stream,
        initialData: _str,
        builder: (BuildContext context, AsyncSnapshot<int> snapshot){
            return Text('点击的时候这个值会改变: ${snapshot.data}');
        }
    )
  4. 步骤4.往StreamBuilder里添加流,数据变了,就用通知小部件
    _streamController.sink.add("ddd");

    参考

    https://www.cnblogs.com/sangwl/archive/2004/01/13/12911955.html