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
あまり表示されない
RenderSliver
のドキュメントは、現時点で最も信頼のおけるSliverドキュメントに最も近いもののようです。
RenderSliver
はによって実装されます
RenderSliverHelpers
(mixin)RenderSliverMultiBoxAdaptor
(要約)RenderSliverFixedExtentBoxAdaptor
(要約)_RenderSliverPrototypeExtentList
(コンクリート)RenderSliverFillViewport
(コンクリート)RenderSliverFixedExtentList
(コンクリート)RenderSliverGrid
(コンクリート)RenderSliverList
(コンクリート)RenderSliverPadding
(コンクリート)RenderSliverPersistentHeader
(要約)RenderSliverFloatingPersistentHeader
(コンクリート)RenderSliverFloatingPinnedPersistentHeader
(コンクリート)RenderSliverPinnedPersistentHeader
(コンクリート)RenderSliverScrollingPersistentHeader
(コンクリート)RenderSliverSingleBoxAdapter
(要約)RenderSliverFillRemaining
(コンクリート)RenderSliverToBoxAdapter
(コンクリート)これらのRenderSliver
実装は、次のウィジェットによって作成されます。
SliverMultiBoxAdaptorWidget
サブクラス:
StatelessWidget
サブクラス:
SliverPersistentHeader
SliverAppBar
によって使用されますSingleChildRenderObjectWidget
サブクラス:
つまり、これらはRenderSliver
のインスタンスを作成するときに使用できるウィジェットです。
もちろん、RenderSliver
を作成するウィジェットは時間の経過とともに追加される可能性が高く、独自のウィジェットを作成することもできます。うまくいけば、このリストはあなたが始めるのに十分であろう。