CustomScrollView和PageView问题

时间:2018-10-19 13:29:16

标签: flutter customscrollview

我有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

1 个答案:

答案 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上打开一个问题,以更好地了解这一点。