从零开始的Flutter之旅: InheritedWidget

本文介绍了Flutter中的InheritedWidget,用于在widget树中从上到下传递和共享数据。通过一个改造过的计数器示例,详细阐述了InheritedWidget的创建、使用及依赖更新的处理,并探讨了防止didChangeDependencies反复调用的方法。文章末尾推荐了一个Flutter Github客户端项目作为学习资源。
摘要由CSDN通过智能技术生成

在这里插入图片描述

往期回顾

从零开始的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方法,即子widget将不会更新
    // return context.getElementForInheritedWid
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值