Как использовать флаттер NestedScrollView? - PullRequest
0 голосов
/ 24 апреля 2019

Я реализовал немного NestedScrollView, как показано ниже. Это вызывает ошибку «должен вызываться с контекстом, который содержит NestedScrollView». Но я использовал Builder для создания виджета, и это в руководстве по флаттеру. Что я должен делать?

return NestedScrollView(
      headerSliverBuilder: (context, isInScroll) {
        /* something*/
      },
      body: Hero(
        tag: widget.folderInfo.title + 'body',
        child: Container(
          padding: EdgeInsets.fromLTRB(16.0, 20.0, 16.0, 16.0),
          child: Builder(
            builder: (context) {
              print("built body builder");
               // below line causes error "must be called with a context that contains a NestedScrollView"
              var handle =
                  NestedScrollView.sliverOverlapAbsorberHandleFor(context);
              );
            },
          ),
        ),
      ),
    );

1 Ответ

0 голосов
/ 24 апреля 2019

Функция Builder ожидает оператора возврата, который, по-видимому, отсутствует в предоставленном вами коде.

Ниже код работает и печатает test на экране:

return NestedScrollView(
          headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
            return <Widget>[
              SliverAppBar()
            ];
          },
          body: Hero(
            tag: 'test',
            child: Container(
              padding: EdgeInsets.fromLTRB(16.0, 20.0, 16.0, 16.0),
              child: Builder(builder: (context) {
                var handle = NestedScrollView.sliverOverlapAbsorberHandleFor(context);
                print('test');
                return Container( . // whatever you want to return here
                 child: Text('test'),
                );
                print('test');

              })
            ),
          ),
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...