CarouselSlider 没有刷新指示器

问题描述 投票:0回答:1

我有下面的代码,我想添加拉动刷新功能,当我从顶部拖动时它可以工作,但当我尝试从中心拖动时它不起作用,这是因为我正在使用 CarouselSlider,当我删除它时它可以工作,但我想要将其与刷新指示器一起使用,从屏幕上的任何位置拉出。

RefreshIndicator(
      onRefresh: refreshScreen,
      child: SingleChildScrollView(
        physics: const AlwaysScrollableScrollPhysics(),
        child: Container(
          color: kBackgroundColor,
          child: Stack(
            children: <Widget>[
              CarouselSlider(
                carouselController: tabCarouselController,
                options:

我尝试了许多其他解决方案,例如将其包装在列表或 SingleChildScrollView 中,但没有一个起作用。

flutter pull-to-refresh carousel-slider
1个回答
0
投票

将所有页面主体小部件包装在列表视图中,如下例所示

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。这应该允许您同时拥有轮播滑块和拉动刷新功能,并且您可以从屏幕上的任何位置拉动。

© www.soinside.com 2019 - 2024. All rights reserved.