是否有明确的Sliver小部件列表

rob*_*ter 5 flutter flutter-sliver

我正在尝试使用Sliver来实现可折叠列表标题.当我将小部件从正常更改为Sliver时,我经常会遇到如下错误:

I/flutter ( 3141): ??? EXCEPTION CAUGHT BY WIDGETS LIBRARY ????????????????????????????????????????????????????????????
I/flutter ( 3141): The following assertion was thrown building NotificationListener<ScrollNotification>():
I/flutter ( 3141): A RenderViewport expected a child of type RenderSliver but received a child of type
I/flutter ( 3141): RenderRepaintBoundary.
I/flutter ( 3141): RenderObjects expect specific types of children because they coordinate with their children during
I/flutter ( 3141): layout and paint. For example, a RenderSliver cannot be the child of a RenderBox because a
I/flutter ( 3141): RenderSliver does not understand the RenderBox layout protocol.
I/flutter ( 3141):

I/flutter ( 3141): The RenderViewport that expected a RenderSliver child was created by:
I/flutter ( 3141):   Viewport ? _ScrollableScope ? IgnorePointer-[GlobalKey#307856652] ? Listener ? _GestureSemantics ?
I/flutter ( 3141):   RawGestureDetector-[LabeledGlobalKey<RawGestureDetectorState>#701223524] ? RepaintBoundary ?
I/flutter ( 3141):   CustomPaint ? RepaintBoundary ? NotificationListener<ScrollNotification> ?
I/flutter ( 3141):   GlowingOverscrollIndicator ? Scrollable ? ?
I/flutter ( 3141):
I/flutter ( 3141): The RenderRepaintBoundary that did not match the expected child type was created by:
I/flutter ( 3141):   RepaintBoundary ? NotificationListener<ScrollNotification> ? GlowingOverscrollIndicator ?
I/flutter ( 3141):   Scrollable ? SingleChildScrollView ? Viewport ? _ScrollableScope ?
I/flutter ( 3141):   IgnorePointer-[GlobalKey#307856652] ? Listener ? _GestureSemantics ?
I/flutter ( 3141):   RawGestureDetector-[LabeledGlobalKey<RawGestureDetectorState>#701223524] ? RepaintBoundary ? ?
I/flutter ( 3141):
Run Code Online (Sandbox Code Playgroud)

我的理解是因为普通小部件不能直接用于在Sliver小部件中呈现.

框架中是否有明确的Sliver小部件列表?

sliver.dart 没有太多表现

Col*_*son 20

这些文档RenderSliver似乎是我们目前最接近明确的Sliver文档的文档.

RenderSliver 由...实施

  • RenderSliverHelpers (混入)
  • RenderSliverMultiBoxAdaptor (抽象)
    • RenderSliverFixedExtentBoxAdaptor (抽象)
      • _RenderSliverPrototypeExtentList (具体)
      • RenderSliverFillViewport (具体)
      • RenderSliverFixedExtentList (具体)
    • RenderSliverGrid (具体)
    • RenderSliverList (具体)
  • RenderSliverPadding (具体)
  • RenderSliverPersistentHeader (抽象)
    • RenderSliverFloatingPersistentHeader (具体)
      • RenderSliverFloatingPinnedPersistentHeader (具体)
    • RenderSliverPinnedPersistentHeader (具体)
    • RenderSliverScrollingPersistentHeader (具体)
  • RenderSliverSingleBoxAdapter (抽象)
    • RenderSliverFillRemaining (具体)
    • RenderSliverToBoxAdapter (具体)

这些RenderSliver实现由以下小部件创建:

SliverMultiBoxAdaptorWidget 子类:

StatelessWidget 子类:

SingleChildRenderObjectWidget 子类:

因此,当您想要生成实例时,可以使用这些小部件RenderSliver.

当然,RenderSliver随着时间的推移,可能会增加越来越多的创建小部件,您也可以创建自己的小部件!希望这个列表足以让你入门.


use*_*613 5

截至 2021 年,根据他们的文档,这些是一些 sliver 小部件:

银色动画列表

插入或移除项目时动画的条子。

SliverAnimatedOpacity

SliverOpacity 的动画版本,只要给定的不透明度发生变化,它就会在给定的持续时间内自动转换 sliver 子项的不透明度。

银色渐变过渡

动画条状小部件的不透明度。

SliverFill剩余

包含填充视口中剩余空间的单个框子项的条子。

SliverFill 视口

包含多个框子项的条子,每个子项填充视口。

SliverFixedExtentList

将多个具有相同主轴范围的框子元素放置在线性阵列中的条子。

银格子

将多个盒子孩子放置在二维排列中的条子。

忽略指针

在命中测试期间不可见的条子小部件。

SliverLayoutBuilder

构建一个可以依赖于它自己的 SliverConstraints 的 sliver 小部件树。

名单

沿主轴将多个盒子子项放置在线性阵列中的条子。

Sliver 台下

一个 sliver 将它的 sliver 子项像在树中一样展开,但没有绘制任何东西,没有使 sliver 子项可用于命中测试,也没有在父项中占据任何空间。

不透明度

一个使它的 sliver 子组件部分透明的 sliver 小部件。

银条重叠吸收器

包裹另一个的条子,迫使其布局范围被视为重叠。

SliverOverlapAbsorberHandle

提供给 SliverOverlapAbsorber、SliverOverlapInjector 和 NestedScrollViewViewport 的句柄,以在 NestedScrollView 中移动重叠。

SliverOverlapInjector

具有基于存储在 SliverOverlapAbsorberHandle 中的值的条子几何形状的条子。

棉条

在另一条条子的每一侧应用填充的条子。

SliverPersistentHeader

当条子滚动到与条子的生长方向相对的视口边缘时,条子的大小会发生变化。

SliverPrototypeExtentList

将其框子项置于线性阵列中并将它们约束为沿主轴具有与原型项相同的范围的条子。

SliverReorderableList

允许用户以交互方式重新排序列表项的细长列表。

银安全区

通过足够的填充插入另一个条子以避免操作系统入侵的条子。

SliverToBox 适配器

包含单个框小部件的条子。

银色可见性

是显示还是隐藏一个银子孩子。