Widget Tree Depth Counter (小部件树深度计数器)

Pub Package likes popularity pub points

Package Issue Package License

WidgetTreeDepthCounter 是一个小部件,用于计算嵌套的小部件树的数量,在动态构建界面时非常有用,因为了解小部件的深度很重要。

Code-2022-02-42-07

WidgetTreeDepthCounter

特点

  • 小部件相对于树的深度计数 (当前树中 WidgetTreeDepthCounter 的所有使用都将被计算在内,其他类型的小部件不被计算)

此小部件可以在以下情况下方便使用

  • 根据小部件在树中的位置动态管理小部件的颜色

  • 在一个管理章节编号的应用中,如果移除一个章节,可以非常容易地重新编号。

  • ...

    许多其他难以通过固定参数管理小部件的情况,而是根据树的构造进行管理。

用法

请务必在 GitHub 上查看示例。

widget_tree_example

在小部件树中运行的示例

安装

来自 pubspec.yaml

将以下行添加到pubspec.yaml

dependencies:
  widget_tree_depth_counter: <last-release>

and

flutter pub get

来自 CLI

运行以下命令

flutter pub add widget_tree_depth_counter

基本设置

完整的示例 可在此处找到。

ParentWidget(
  child: WidgetTreeDepthCounter(
    builder: (context, counter) => //counter=0
      Container(
        color: Theme.of(context)
          .primaryColor
          .withOpacity(counter * 0.05 + 0.05),
          child: WidgetTreeDepthCounter(
            builder: (context, counter) =>//counter=1
                Container(
                    color: Theme.of(context)
                    .primaryColor
                        .withOpacity(counter * 0.05 + 0.05),
                ),
          ),
      ),
  ),
),

WidgetTreeDepthCounter 属性

  • builder: 在布局时调用的函数,用于构建小部件树,返回 Widget
  • count: 使用此参数可以定义或覆盖当前的深度计数。

构建 WidgetTreeDepthCounter 时使用当前的 counter

WidgetTreeDepthCounter 使用 Provider 库来计算深度,但如果需要访问当前值来进行求和(例如),则可以通过 `Provider` 函数检索计数值。

WidgetTreeDepthCounter(
			count: context.read<DepthCounter>().value + 2,
            builder: (context, counter) =>
                Text(counter.toString()),
          )

显然,要通过 context.read<DepthCounter>() 访问该值,树中必须至少存在一个 WidgetTreeDepthCounter 并且需要 `provider` 包。

https://pub.dev/packages/widget_tree_depth_counter