我有CustomScrollView,里面有SliverFixedExtentList和SliverList。我将PageView放在SliverFixedExtentList的委托中。事情是滚动到底部并打开详细信息页面并返回后,它给了我一个我不太了解的异常:
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
I/flutter (25339): The following assertion was thrown while finalizing the widget tree:
I/flutter (25339): 'package:flutter/src/widgets/scroll_position.dart': Failed assertion: line 661 pos 12: 'pixels !=
I/flutter (25339): null': is not true.
您知道发生了什么吗?这是引起问题的要点:https://gist.github.com/figengungor/e03704744d0ef786a15ecb783060f730(
答案 0 :(得分:0)
使用选项卡小部件时,这似乎是经常出现的错误。 github上有一个未解决的问题,似乎可以解决与您有关的其他情况。
根据您的情况,这似乎发生在您的PageView
小部件失去屏幕焦点时。
虽然这不是一个好的解决方案(但确实可以解决错误),但它应该可以为您提供帮助:
声明一个ScrollController
:
class HomePageState extends State<HomePage> {
ScrollController _scrollController = new ScrollController();
...
将其分配给您的CustomScrollView
:
CustomScrollView(
controller: _scrollController,
...
在转到另一页之前,向上滚动列表以使PageView小部件可见:
_openSecondPage(BuildContext context) {
_scrollController.animateTo(0.0, duration: Duration(milliseconds: 1), curve: Curves.bounceInOut);
Navigator.of(context).push(MaterialPageRoute(builder: (_) => SecondPage()));
...
您应该保存滚动位置以滚动到单击该项目时的位置。
PS:在flutter github上打开一个问题,以更好地了解这一点。