Closed oshiwei closed 10 months ago
你好,目前我在使用easy_refresh时,经常出现刷新header无法回弹收起的情况,怀疑是列表中存在自动轮播导致的,修改了example中的carousel_page.dart测试,也存在同样的问题,能帮忙一起查看一下吗? 以下是我修改后的代码:
import 'package:carousel_slider/carousel_slider.dart'; import 'package:example/widget/skeleton_item.dart'; import 'package:flutter/material.dart'; import 'package:easy_refresh/easy_refresh.dart'; import 'package:get/get.dart'; class CarouselPage extends StatefulWidget { const CarouselPage({Key? key}) : super(key: key); @override State<CarouselPage> createState() => _CarouselPageState(); } class _CarouselPageState extends State<CarouselPage> { int _count = 10; int _carouselCount = 5; late EasyRefreshController _controller; @override void initState() { super.initState(); _controller = EasyRefreshController( controlFinishRefresh: true, controlFinishLoad: true, ); } @override void dispose() { _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { final themeData = Theme.of(context); return Scaffold( appBar: AppBar( title: Text('Carousel example'.tr), ), body: EasyRefresh( controller: _controller, onRefresh: () async { await Future.delayed(const Duration(seconds: 2)); if (!mounted) { return; } setState(() { _count = 10; }); _controller.finishRefresh(); _controller.resetFooter(); }, onLoad: () async { await Future.delayed(const Duration(seconds: 2)); if (!mounted) { return; } setState(() { _count += 5; }); _controller.finishLoad( _count >= 20 ? IndicatorResult.noMore : IndicatorResult.success); }, triggerAxis: Axis.vertical, child: CustomScrollView( slivers: [ SliverToBoxAdapter( child: CarouselSlider( options: CarouselOptions( height: 180.0, viewportFraction: 1, enableInfiniteScroll: false, autoPlay: true, autoPlayInterval: Duration(seconds: 2), ), items: [ for (int i = 0; i < _carouselCount; i++) Card( elevation: 0, color: themeData.colorScheme.surfaceVariant, child: Center( child: Text((i + 1).toString()), ), ), ], ), ), SliverList( delegate: SliverChildBuilderDelegate( (context, index) { return const SkeletonItem(); }, childCount: _count, ), ), ], ), ), ); } }
只有build中的代码修改过,设置了EasyRefresh的triggerAxis: Axis.vertical,删除了CarouselSlider上的EasyRefresh,为了更好的复现,将轮播时间设置为2s:autoPlayInterval: Duration(seconds: 2)
Readme第一条
非常感谢!我也非常惭愧,看了readme第一条的代码,但没认真理解文字的含义。
你好,目前我在使用easy_refresh时,经常出现刷新header无法回弹收起的情况,怀疑是列表中存在自动轮播导致的,修改了example中的carousel_page.dart测试,也存在同样的问题,能帮忙一起查看一下吗? 以下是我修改后的代码:
只有build中的代码修改过,设置了EasyRefresh的triggerAxis: Axis.vertical,删除了CarouselSlider上的EasyRefresh,为了更好的复现,将轮播时间设置为2s:autoPlayInterval: Duration(seconds: 2)![Simulator Screen Recording - iPhone 14 - 2023-09-04 at 15 41 50](https://github.com/xuelongqy/flutter_easy_refresh/assets/4979552/f5bbabfe-b868-4833-b293-c0d6d39156bf)