Название может быть не совсем точным, но простите меня, я действительно не знаю, что написать. Я пытаюсь создать эффект, при котором элементу noScroll phyicas Listview
, который вложен с другими элементами в SingleChildScrollView
, необходимо будет перейти на прокручиваемую физику, когда он достигнет вершины SingleChildScrollView
(таким образом, занимая весь вид ), чтобы использовать отложенную загрузку элементов.
Я должен сказать, что я пытался избежать перестройки вложенного Listview
из-за этой стоимости и особенно затрат на его построение с помощью физики NeverScrolling, поскольку это остановило бы основной поток пользовательского интерфейса до тех пор, пока не будут созданы все элементы.
Необходимость использования физики NeverScrolling в первую очередь, чтобы позволить SingleChildScrollView
правильно прокручивать (если для просмотра списка выбрана обычная прокрутка, SingleChildScrollView
не сможет прокручивать, если жест исходит из вложенного Listview
)
Мой код выглядит так:
SingleChildScrollView(
scrollDirection: Axis.vertical,
child: Material(
child: Container(
child: Column(
children: <Widget>[
ItemListDevider(),
Container(
height: 120,
child: Container(height:120)
),
ItemListDevider(),
Flexible(
fit: FlexFit.loose,
child: THeWidgetHoldingTheListView(album),
)
],
),
),
),
)
// the build method of the THeWidgetHoldingTheListView widget would return this :
Container(
child: Row(
mainAxisSize: MainAxisSize.max,
children: <Widget>[
Expanded(
child: Column(
children: <Widget>[
Flexible(
child: ListView.builder(
controller: controller,
shrinkWrap: true,
itemExtent: FixedItemExtent,
physics: AlwaysScrollableScrollPhysics(),
itemCount: FixedItemCount,
itemBuilder: (context, index) {
return MyCard()
},
),
),
],
),
),
MyScrollbar(
controller: controller,
),
],
),
)
* Примечание: * У меня была идея создать собственный ScrollPhysics, который начинается как NeverScrollPhysics и переключатели на определенное смещение прокрутки, но это не изменит того факта, что я должен загружать весь список как Neverscroll и, таким образом, останавливать основной поток пользовательского интерфейса.
Есть ли способ обойти это изменение физики прокрутки, если нет, как я могу реализовать его без ущерба для производительности, как упомянуто выше.