Необходимо убедиться, что представление прокрутки всегда прокручивается с помощью AlwaysScrollableScrollPhysics()
.
Вам также нужно сделать большую прокручиваемую область. Вы можете использовать Container
и получить высоту экрана с помощью MediaQuery
.
child: RefreshIndicator(
onRefresh: () async {
print('onRefresh called');
},
child: SingleChildScrollView(
physics: const AlwaysScrollableScrollPhysics(),
child: Container(
alignment: Alignment.topCenter,
padding: EdgeInsets.only(top: 50),
height: MediaQuery.of(context).size.height,
child: Text('hello'),
),
),
),
Это не идеальное решение. Функция обновления работает только тогда, когда пользователь перетаскивает пустое пространство вокруг текста. Если пользователь перетаскивает текст, он не видит символ обновления. Также они могут немного прокрутить.
Лучшее решение - использовать PageView с вертикальной прокруткой, всегда включенной, и одной страницей:
child: RefreshIndicator(
onRefresh: () async {
print('onRefresh called');
},
child: PageView(
scrollDirection: Axis.vertical,
physics: const AlwaysScrollableScrollPhysics(),
children: <Widget>[
Center(
child: Text('hello'),
)
],
),
),