我试图将2个Slivers元素提取到一个单独的Widget中。但是无法实现...有什么想法吗? 这是原始代码:
CustomScrollView(
slivers: <Widget>[
SliverPersistentHeader(
pinned: false,
delegate: WidgetOne(),
),
SliverPersistentHeader(
pinned: true,
delegate: WidgetTwo(),
),
WidgetThree(),
],
)
想法是要有这样的东西:
CustomScrollView(
slivers: <Widget>[
SliverPersistentHeader(
pinned: false,
delegate: WidgetOne(),
),
ExtractedWidget()
],
)
class ExtractedWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ....
// What should be here? Containers etc returns error...
SliverPersistentHeader(
pinned: true,
delegate: WidgetTwo(),
),
WidgetThree(),
}
}
谢谢! PS:此代码的整个逻辑是,首先放置一个固定高度的块,下面放置另一个具有一定高度的块,最后一个是包含各种元素的 list 。事实是,滚动 second 块时应固定。这就是为什么我用这种条子。
答案 0 :(得分:1)
您只能像以下示例一样退回条子:
class ExtractedWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return SliverPersistentHeader(
pinned: true,
delegate: WidgetTwo(),
);
}
}
如果您想返回一棵小部件树,则必须找到一个可以容纳该小部件的容器,例如SliverToBoxAdapter
,但我不知道SliverPersistentHeader
是否可以放置在另一个条子中容器。希望能对您有所帮助。