Sliverウィジェットの明確なリストはありますか?質問する

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):

私の理解では、これは通常のウィジェットを Sliver ウィジェットで直接レンダリングするために使用できないためだと思われます。

フレームワーク内に Sliver ウィジェットの明確なリストはありますか?

sliver.dartあまり表示されない

ベストアンサー1

ドキュメント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ウィジェットが追加される可能性があり、独自のウィジェットを作成することもできます。このリストが、開始するのに十分であることを願っています。

おすすめ記事