• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

setState局部刷新和InheritedWidget源码flutter性能优化指南以和源码

武飞扬头像
Ejasmine
帮助1

setState与局部刷新

setState想必对大家都很熟悉,你可以使用setState来刷新页面数据。setState源码如下:

@protected
void setState(VoidCallback fn) {
    ...
    _element!.markNeedsBuild();
}

setState确实是一个大家耳熟能详的刷新页面的方法,但是setState有一个不好的地方,也就是它会将整个widget全部刷新。但是有时候我们只是更改页面中某个角落里的小数据,完全不需要全局刷新。因此,局部刷新对我们来说是一个非常好的解决办法。

InheritedWidget源码

在说我们的主角Provider之前,我们先来说说InheritedWidget。

InheritedWidget是一种从上到下数据共享的方式,你在根Widget上共享了一个数据,那个你在任意子Widget上都可以是使用这个数据。首先我们还是从源码进行分析:

abstract class InheritedWidget extends ProxyWidget {
  /// 抽象的构造函数。这个构造函数使子类能够提供构造函数,从而使它们能够在构造表达式中使用。
  const InheritedWidget({ Key? key, required Widget child })
    : super(key: key, child: child);

  @override
  InheritedElement createElement() => InheritedElement(this);

  /// 框

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgcbhff
系列文章
更多 icon
同类精品
更多 icon
继续加载