为什么 Sliver App Bar 的 flexibleSpace 参数必须带一个 const 构造函数的 Widget?
Why does Sliver App Bar's flexibleSpace parameter have to take a Widget with a const constructor?
我正在尝试构建一个包含条形应用栏的自定义滚动视图,以实现类似于此处显示的内容:
https://medium.com/@diegoveloper/flutter-collapsing-toolbar-sliver-app-bar-14b858e87abe
但是我想要搜索这个词,在它下面我想要 3 个 IconButtons 均匀间隔,当页面 (CustomScrollView) 滚动时,我想要将 3 个 IconButtons 固定到 SliverAppBar 和搜索文本的顶部消失...
我试图通过以下代码实现上述目标:
class SearchPage extends StatelessWidget {
const SearchPage();
@override
Widget build(BuildContext context) {
return CustomScrollView(slivers: <Widget>[
const SliverAppBar(
pinned: true,
expandedHeight: 250.0,
flexibleSpace: _buildSliverAppBarFlex(),
);
}
Widget _buildSliverAppBarFlex() {
return Container(
child: Column(
children: <Widget>[
Text("Search", style: TextStyle(fontSize: 24.0,
color: Colors.white,
fontWeight: FontWeight.bold)),
Row(children: <Widget>[
IconButton(icon: Icon(Icons.flight)),
IconButton(icon: Icon(Icons.hotel)),
IconButton(icon: Icon(Icons.drive_eta))
])
],
)
);
}
}
但是我收到一条警告,说 flexibleSpace 必须采用 const 构造函数小部件,而我制作的 _buildSilverAppBarFlex 小部件不是 - 我也不能向它添加 const 或 final ......关于如何实现我的想法的任何想法想要?
出现警告是因为您在 SliverAppBar
之前使用 const
,删除它,警告就会消失。
所以,而不是这个
const SliverAppBar(...)
用这个。
SliverAppBar(...)
如果您想在那里使用 const
,请确保您的 FlexibleSpaceBar
也是 const
。
我正在尝试构建一个包含条形应用栏的自定义滚动视图,以实现类似于此处显示的内容:
https://medium.com/@diegoveloper/flutter-collapsing-toolbar-sliver-app-bar-14b858e87abe
但是我想要搜索这个词,在它下面我想要 3 个 IconButtons 均匀间隔,当页面 (CustomScrollView) 滚动时,我想要将 3 个 IconButtons 固定到 SliverAppBar 和搜索文本的顶部消失...
我试图通过以下代码实现上述目标:
class SearchPage extends StatelessWidget {
const SearchPage();
@override
Widget build(BuildContext context) {
return CustomScrollView(slivers: <Widget>[
const SliverAppBar(
pinned: true,
expandedHeight: 250.0,
flexibleSpace: _buildSliverAppBarFlex(),
);
}
Widget _buildSliverAppBarFlex() {
return Container(
child: Column(
children: <Widget>[
Text("Search", style: TextStyle(fontSize: 24.0,
color: Colors.white,
fontWeight: FontWeight.bold)),
Row(children: <Widget>[
IconButton(icon: Icon(Icons.flight)),
IconButton(icon: Icon(Icons.hotel)),
IconButton(icon: Icon(Icons.drive_eta))
])
],
)
);
}
}
但是我收到一条警告,说 flexibleSpace 必须采用 const 构造函数小部件,而我制作的 _buildSilverAppBarFlex 小部件不是 - 我也不能向它添加 const 或 final ......关于如何实现我的想法的任何想法想要?
出现警告是因为您在 SliverAppBar
之前使用 const
,删除它,警告就会消失。
所以,而不是这个
const SliverAppBar(...)
用这个。
SliverAppBar(...)
如果您想在那里使用 const
,请确保您的 FlexibleSpaceBar
也是 const
。