如何在 Flutter 中 return 多个 sliver widgets?
How to return multiple sliver widgets in Flutter?
我正在使用 Slivers 和 Provider 构建一个 Flutter 应用程序。
Widget build(BuildContext context) {
return CustomScrollView(
slivers: [
SliverAppBar(),
Consumer<CustomerController>(
builder: (context, model, child) {
if (model.loading) {
return Loading();
}
else {
return Header();
return Saved();
return Recommendations();
}
},
),
],
);
}
- 正在加载 return一个 SliverFillRemaining
- Header return一个 SliverToBoxAdapter
- 已保存 return一个 SliverList
- 推荐returnSliverList
基本上在我的应用程序中,SliverAppBar 始终显示。
现在,根据模型的加载状态,需要渲染其余的条形小部件。但我只能使用 return 一次,它不会呈现已保存和推荐小部件。
如何解决这个问题?我如何 return 在 else
块中指定的所有条子小部件?
为了显示所有三个条子,您必须将 Consumer
小部件设为父小部件。看看下面的代码。
Widget build(BuildContext context) {
return Consumer<CustomerController>(
builder: (context, model, child) {
if (model.loading) {
return Loading();
} else {
return CustomScrollView(slivers: [
SliverAppBar(),
Header(),
Saved(),
Recommendations(),
]);
}
},
);
}
我用过这个方便的包 - sliver_tools。
并这样使用
Widget build(BuildContext context) {
return CustomScrollView(
slivers: [
SliverAppBar(),
Consumer<CustomerController>(
builder: (context, model, child) {
if (model.loading) {
return Loading();
}
else {
return MultiSliver(
children: [
Header(),
Saved(),
Recommendations(),
],
};
}
},
),
],
);
}
我正在使用 Slivers 和 Provider 构建一个 Flutter 应用程序。
Widget build(BuildContext context) {
return CustomScrollView(
slivers: [
SliverAppBar(),
Consumer<CustomerController>(
builder: (context, model, child) {
if (model.loading) {
return Loading();
}
else {
return Header();
return Saved();
return Recommendations();
}
},
),
],
);
}
- 正在加载 return一个 SliverFillRemaining
- Header return一个 SliverToBoxAdapter
- 已保存 return一个 SliverList
- 推荐returnSliverList
基本上在我的应用程序中,SliverAppBar 始终显示。
现在,根据模型的加载状态,需要渲染其余的条形小部件。但我只能使用 return 一次,它不会呈现已保存和推荐小部件。
如何解决这个问题?我如何 return 在 else
块中指定的所有条子小部件?
为了显示所有三个条子,您必须将 Consumer
小部件设为父小部件。看看下面的代码。
Widget build(BuildContext context) {
return Consumer<CustomerController>(
builder: (context, model, child) {
if (model.loading) {
return Loading();
} else {
return CustomScrollView(slivers: [
SliverAppBar(),
Header(),
Saved(),
Recommendations(),
]);
}
},
);
}
我用过这个方便的包 - sliver_tools。
并这样使用
Widget build(BuildContext context) {
return CustomScrollView(
slivers: [
SliverAppBar(),
Consumer<CustomerController>(
builder: (context, model, child) {
if (model.loading) {
return Loading();
}
else {
return MultiSliver(
children: [
Header(),
Saved(),
Recommendations(),
],
};
}
},
),
],
);
}