从零开始的Flutter之旅: InheritedWidget

在这里插入图片描述

往期回顾

从零开始的Flutter之旅: StatelessWidget

从零开始的Flutter之旅: StatefulWidget

在之前的文章中,介绍了StatelessWidget与StatefulWidget的特性与它们的呈现原理。

这期要聊的是它们的另一个兄弟InheritedWidget。

特性

InheritedWidget是Flutter中的一个非常重要的功能组件,它能够提供数据在widget树中从上到下进行传递。保证数据在不同子widget中进行共享。这对于一些需要使用共享数据的场景非常有效,例如,在Flutter SDK中就是通过InheritedWidget来共享应用的主题与语言信息。

可能你还有点模糊,别急,下面我们通过一个简单的示例来了解InheritedWidget。

示例

相信开始学Flutter时都看过官方的计数器示例。我们将官方提供的计数器示例使用InheritedWidget进行改造。

首先我们需要一个CountInheritedWidget,它继承于InheritedWidget。

class CountInheritedWidget extends InheritedWidget {
  CountInheritedWidget({@required this.count, Widget child})
      : super(child: child);
 
  // 共享数据,计数的数量
  final int count;
 
  // 统一的获取CountInheritedWidget实例, 方便树中子widget的获取共享数据
  // 必须在State中调用才会有效
  static CountInheritedWidget of(BuildContext context) {
    // 调用共享数据的子widget将不会回调didChangeDependencies方法,即子w
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值