Flutter-局部刷新Widget

2023-10-26  本文已影响0人  木马不在转
Flutter的setState刷新是重新刷新整个布局的,要想局部刷新,目前有3个方法可以实现,一个是通过GlobalKey来实现,不过官方建议少用GlobalKey,所以下面只介绍剩余2种方法.

一、StreamBuilder

1、注册监听控制器

int value = 0;
final StreamController<int>  _streamController = StreamController();

2、包裹要更新的组件

StreamBuilder(
        stream: _streamController.stream,
       initialData: value,
       builder: (BuildContext context, AsyncSnapshot snapshot) {
        return Text('局部更新的组件');
      },

3、执行刷新

_streamController.add(a);

4、注意销毁

  _streamController.close();

二、StatefulBuilder

1、声明一个控制对象

final StateSetter mSetter;

2、包裹要更新的组件

StatefulBuilder(
  builder: (BuildContext context, StateSetter setState) {
    mSetter = setState;
    return Text("局部刷新的组件");
  },
),

3、执行刷新

this.mSetter(() {});

2种刷新方法各有优势,不过现在更好的局部刷新方式我觉得用GetX框架实现更为方便.

上一篇 下一篇

猜你喜欢

热点阅读