Проблема CustomScrollView и PageView - PullRequest
0 голосов
/ 19 октября 2018

У меня есть 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 голосов
/ 19 октября 2018

Это похоже на повторяющуюся ошибку при использовании вкладок виджетов.Существует открытая проблема на 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: откройте проблему на флаттере github , чтобы лучше об этом узнать.

...