如何在Flutter中实现双向页面滚动功能?给定Scaffold中的多个PageView似乎无效,嵌套的PageView也无效。我的感觉是NestedScrollView可能提供解决方案,但我一直在努力寻找实现方法。
答案 0 :(得分:0)
多向PageView:
您可能为此创建一些技巧,即将页面数量设置为2000,然后将初始页面设置为1000。因此,创建具有1000 +/-左右滚动的PageView吗?
小部件:
@override
Widget build(BuildContext context) {
Future<void>.delayed(Duration.zero, () => _diaryBloc.buildComplete());
return Container(
height: MediaQuery.of(context).size.height,
child: PageView.builder(
controller: _diaryBloc.pageController,
itemBuilder: (BuildContext context, int position) {
return _buildPage(_diaryBloc.getDateFromPosition(position));
},
itemCount: 2000,
),
);
}
BLoC或其他控制器
final PageController pageController = PageController();
final int initialPage = 1000;
Future<void> buildComplete() async {
pageController.jumpToPage(initialPage);
}
DateTime getDateFromPosition(int position) {
if (position < 0) {
return currentDateTime.subtract(Duration(days: position - initialPage));
} else {
return currentDateTime.add(Duration(days: position - initialPage));
}
}
可能不是理想的选择,但是它非常简单,并且似乎运行良好。