Zac*_*ter 8 dart flutter flutter-sliver
SliverList是一个包含盒子小部件的条子。是否有包含条子小部件的条子?
我试图嵌套 flutter_sticky_headers 来创建时间线,但SliverStickyHeader只接受单个条子作为参数(请参阅 中的注释monthSlivers())。
class HomeView extends StatelessWidget {
final HomeViewModel viewModel;
HomeView(this.viewModel);
List<Widget> entryTiles(List<EntryTileViewModel> entryVMs) {
return entryVMs.map((entryVM) => EntryTile(viewModel: entryVM)).toList();
}
List<Widget> daySlivers(List<DaySection> daySections) {
return daySections.map((daySection) {
var entries = entryTiles(daySection.entryVMs);
return SliverStickyHeader(
overlapsContent: true,
header: DayHeader(
viewModel: DayHeaderViewModel(date: daySection.date),
),
sliver: SliverList(
delegate: SliverChildBuilderDelegate(
(context, i) => entries[i],
childCount: entries.length,
),
),
);
}).toList();
}
List<Widget> monthSlivers() {
return viewModel.monthSections.map((monthSection) {
var days = daySlivers(monthSection.daySections);
return SliverStickyHeader(
header: MonthHeader(
viewModel: MonthHeaderViewModel(date: monthSection.date),
),
sliver:,// THIS IS WHERE I WANT TO PUT DAYSLIVERS().
);
}).toList();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: CustomScrollView(
slivers: monthSlivers(),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用该sliver_tools包。它有一个名为的小部件MultiSliver,您可以通过它实现所需的结果。正如文档提到的:
MultiSliver 小部件允许将多个条子分组在一起,以便它们可以作为单个小部件返回。例如,当有人想要用一些填充或继承的小部件包裹一些条子时。
这是一个例子:
class WidgetThatReturnsASliver extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MultiSliver(
children: <Widget>[
SliverPersistentHeader(...),
SliverList(...),
],
);
}
}
Run Code Online (Sandbox Code Playgroud)
或者你可以在 a 中使用它CustomScrollView:
CustomScrollView(
slivers:[
MultiSliver(
SliverList(...),
SliverGrid(...),
...
)
]
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4994 次 |
| 最近记录: |