Closed ehangwork closed 6 months ago
麻烦提供一下可运行的复现案例,我排查一下问题~
我也遇到了这个问题,B页面使用了EasyRefresh,从A页面进入B页面,不滑动直接返回会报这个错,向下滑后再返回则没有问题
麻烦提供一下可运行的复现案例,我排查一下问题~
这个地方不能异步触发,因为触发之前他可能已经被销毁了,会报错
这个错误触发环境比较复杂,我测试了很多次,当EasyRefresh的子组件中有TabBar且TabBar设置为允许滚动且超过屏幕宽度的同时,在页面中再加入PageView组件,同时页面高度要超过屏幕高度,从另一个页面进入该页面,不要触发下拉加载,直接返回就会有上面的那个错误。如果下拉加载一次以后,再返回就不会有这个错误。
EasyRefresh(
clipBehavior: Clip.none,
controller: _controller,
header: ClassicHeader(),
onRefresh: () async {
await Future.delayed(Duration(seconds: 2));
},
child: CustomScrollView(
slivers: [
SliverToBoxAdapter(
child: Column(
children: [
TabBar(
controller: tabController,
isScrollable: true,
tabs: [
Tab(text: 'Tab 1111111111111'),
Tab(text: 'Tab 2222222222222'),
Tab(text: 'Tab 3333333333333'),
Tab(text: 'Tab 3333333333333'),
Tab(text: 'Tab 3333333333333'),
Tab(text: 'Tab 3333333333333'),
],
),
SizedBox(
height: 1000,
child: PageView(
controller: pageController,
children: [
Container(),
Container(),
Container(),
],
),
),
],
),
),
],
),
),
3.3.4尝试已修复,如还有问题,请重新开启此issue
[VERBOSE-2:dart_vm_initializer.cc(41)] Unhandled Exception: A HeaderNotifier was used after being disposed. Once you have called dispose() on a HeaderNotifier, it can no longer be used.
0 ChangeNotifier.debugAssertNotDisposed. (package:flutter/src/foundation/change_notifier.dart:157:9)
1 ChangeNotifier.debugAssertNotDisposed (package:flutter/src/foundation/change_notifier.dart:164:6)
2 ChangeNotifier.notifyListeners (package:flutter/src/foundation/change_notifier.dart:360:27)
3 IndicatorNotifier._updateBySimulation. (package:easy_refresh/src/notifier/indicator_notifier.dart:489:9)
4 new Future. (dart:async/future.dart:253:37)
5 Timer._createTimer. (dart:async-patch/timer_patch.dart:18:15)
6 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:398:19)
7 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:429:5)
8 _RawReceivePort._handleMessage (dart:isolate-patch/iso<…>