Я пытаюсь создать собственное представление прокрутки, содержащее полоску приложения, чтобы добиться чего-то похожего на то, что показано здесь:
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... Есть идеи, как я могу добиться того, что я хочу?
Предупреждение появляется, потому что вы используете const
перед SliverAppBar
, удалите это, и предупреждение исчезнет.
Итак, вместо этого
const SliverAppBar(...)
Использовать этот.
SliverAppBar(...)
Если вы хотите использовать const
там, убедитесь, что ваш FlexibleSpaceBar
также является const
.
Я не знаю, сработало ли это, потому что я использовал совершенно другой подход - но я одобряю - у меня также есть еще один вопрос: предположим, у меня есть SliverAppBar и SliverList, у которого есть SliverChildListDelegate, как мне прикрепить/закрепить первый дочерний элемент в SliverList в верхней части экрана, когда SliverAppBar прокручивается/схлопывается (за пределы экрана)?