#flutter #flutter-layout
#flutter #flutter-макет
Вопрос:
У меня есть горизонтальный просмотр страницы с некоторым вложенным вертикальным просмотром списка на каждой странице.
проблема в том, что я не могу прокручивать эти вложенные listview, поскольку я регистрирую только PageView
жесты.
примечание: когда я использую SliverChildBuilderDelegate
inside customSCrollView
без ограничений, прокрутка фактически активна, но все остальное нет
вот как выглядит код
class ProductDetail extends StatefulWidget {
@override
State<StatefulWidget> createState() => ProductDetailState();
}
class ProductDetailState extends State {
@override
Widget build(BuildContext context) {
return Material(
child: DefaultTabController(
length: 2,
child: Column(
children: [
Expanded(
child: NestedScrollView(
// physics: BouncingScrollPhysics(),
headerSliverBuilder:
(BuildContext context, bool innerBoxIsScrolled) {
return <Widget>[];
},
body: PageView( // this is a pageView container
children: <Widget>[
CustomScrollView(
slivers: [
SliverList(
delegate: SliverChildBuilderDelegate(
(context, index) {
return ListTile(
title: Text('index $index'),
);
},
childCount: 10
),
)
]
),
CustomScrollView(
slivers: [
SliverList(
delegate: SliverChildBuilderDelegate(
(context, index) {
return ListTile(
title: Text('index $index'),
);
},
childCount: 10
),
)
]
),
],
),
),
),
Container(
height: 30,
// child:
)
],
),
),
);
}
}
Ответ №1:
NestedScrollView
здесь что-то не так. Поскольку вы не используете headerSliverBuilder
, вы можете просто полностью удалить виджет. Вот рабочий код.
@override
Widget build(BuildContext context) {
return Material(
child: PageView(
children: <Widget>[
CustomScrollView(
slivers: [
SliverList(
delegate: SliverChildBuilderDelegate(
(context, index) => ListTile(title: Text('index $index')),
childCount: 20,
),
)
],
),
CustomScrollView(
slivers: [
SliverList(
delegate: SliverChildBuilderDelegate(
(context, index) => ListTile(title: Text('index $index')),
childCount: 20,
),
)
],
),
],
),
);
}
Комментарии:
1. это действительно работает, хотя я до сих пор не понимаю, как жест регистрирует гонку между этими виджетами 1
2. @bihireboris Когда вы используете
ListView
insideNestedScrollView
, он отдает предпочтение последнему, поэтомуListView
он не прокручивается. Для этого могут быть обходные пути, но я ничего не пробовал самостоятельно.