Я хочу обновить свою страницу без прокручиваемого контента, то есть без ListView и др.
Когда я хочу использовать RefreshIndicator, в документации сказано, что мне нужен виджет scrollable, например ListView.
Но если я хочу обновить и хочу использовать анимацию обновления RefreshIndicator без использования ListView, GridView или любого другого виджета с возможностью прокрутки, как я могу это сделать?





Вы можете просто использовать GestureDetector, я создал образец для вас, но он не идеален, вы можете настроить его под свои нужды, он просто определяет, когда вы проводите сверху.
class Test extends StatefulWidget {
@override
_TestState createState() => _TestState();
}
class _TestState extends State<Test> {
var refresh=false;
void refreshData(){
if (!refresh){
refresh=true;
print("Refreshing");
Future.delayed(Duration(seconds: 4),(){
refresh =false;
print("Refreshed");
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
title: Text("Test"),
centerTitle: true,
),
body: GestureDetector(
child: Container(
color: Colors.yellow,
height: double.infinity,
width: double.infinity,
child: Center(child: Text('TURN LIGHTS ON')),
),
onVerticalDragUpdate: (DragUpdateDetails details){
print("direction ${details.globalPosition.direction}");
print("distance ${details.globalPosition.distance}");
print("dy ${details.globalPosition.dy}");
if (details.globalPosition.direction < 1 && (details.globalPosition.dy >200 && details.globalPosition.dy < 250)){
refreshData();
}
},
));
}
}
Вы можете просто обернуть свой контент в SingleChildScrollView, что позволит вам использовать RefreshIndicator. Для того, чтобы взаимодействие по вытягиванию для обновления работало, вам придется использовать AlwaysScrollableScrollPhysics, так как ваш контент, скорее всего, не будет занимать больше места, чем доступно без прокрутки:
RefreshIndicator(
onRefresh: () async {
// Handle refresh.
},
child: SingleChildScrollView(
physics: const AlwaysScrollableScrollPhysics(),
child: /* your content */,
),
);
добавьте SingleChildScrollView в качестве родителя вашего виджета, потому что вам нужен прокручиваемый виджет