RefreshIndicator仅适用于可滚动或与ListView相关的小部件吗?我希望将它与脚手架内的容器一起使用,并使用手势识别器,从而在拉下它时刷新。
我尝试在包含容器的代码中使用 RefreshIndicator,但它不起作用。
在两者之间添加 SingleChildScrollView 对我来说效果很好。
class MyWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return RefreshIndicator(
onRefresh: () {},
child: SingleChildScrollView(
physics: AlwaysScrollableScrollPhysics(),
child: Container(
child: Center(
child: Text('Hello World'),
),
height: MediaQuery.of(context).size.height,
),
),
);
}
}
我创建了一个多功能的 SmartRefreshIndicator 小部件,可以与
一起使用可滚动和不可滚动的子部件。
它非常适合在各种 UI 元素中集成下拉刷新功能,例如 ListView、Column 或任何需要刷新功能的小部件。
class SmartRefreshIndicator extends StatelessWidget {
final Future<void> Function() onRefresh;
final Widget child;
const SmartRefreshIndicator({
super.key,
required this.onRefresh,
required this.child,
});
@override
Widget build(context) {
return LayoutBuilder(
builder: (context, constraints) => RefreshIndicator(
onRefresh: onRefresh,
child: SingleChildScrollView(
physics: const AlwaysScrollableScrollPhysics(),
child: ConstrainedBox(
constraints: BoxConstraints(minHeight: constraints.maxHeight),
child: child,
),
),
),
);
}
}
您可以随意扩展和自定义它以满足您的特定需求!