我有下面的代码,我想添加拉动刷新功能,当我从顶部拖动时它可以工作,但当我尝试从中心拖动时它不起作用,这是因为我正在使用 CarouselSlider,当我删除它时它可以工作,但我想要将其与刷新指示器一起使用,从屏幕上的任何位置拉出。
RefreshIndicator(
onRefresh: refreshScreen,
child: SingleChildScrollView(
physics: const AlwaysScrollableScrollPhysics(),
child: Container(
color: kBackgroundColor,
child: Stack(
children: <Widget>[
CarouselSlider(
carouselController: tabCarouselController,
options:
我尝试了许多其他解决方案,例如将其包装在列表或 SingleChildScrollView 中,但没有一个起作用。
将所有页面主体小部件包装在列表视图中,如下例所示
class MyHomePage extends StatelessWidget {
const MyHomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Carousel Slider with RefreshIndicator'),
),
body: RefreshIndicator(
onRefresh: () async {},
child: ListView(
children: [
CarouselSlider(
options: CarouselOptions(
height: 200.0,
enlargeCenterPage: true,
autoPlay: true,
aspectRatio: 16 / 9,
autoPlayCurve: Curves.fastOutSlowIn,
enableInfiniteScroll: true,
autoPlayAnimationDuration: const Duration(milliseconds: 800),
viewportFraction: 0.8,
),
items: [
Container(
color: Colors.green,
child: const Center(
child: Text('Slide 1'),
),
),
Container(
color: Colors.blue,
child: const Center(
child: Text('Slide 2'),
),
),
Container(
color: Colors.red,
child: const Center(
child: Text('Slide 3'),
),
),
],
),
// Other widgets can go here
],
),
),
);
}
}
在此示例中,CarouselSlider 放置在 ListView 内部,RefreshIndicator 包裹整个 ListView。这应该允许您同时拥有轮播滑块和拉动刷新功能,并且您可以从屏幕上的任何位置拉动。