flutter_pagewise
flutter_pagewise copied to clipboard
widget cannot be marked as needing to build because the framework is already in the process of building widgets
I get the following exception when trying to implement your example in my app
I/flutter (14463): ══╡ EXCEPTION CAUGHT BY FOUNDATION LIBRARY ╞════════════════════════════════════════════════════════
I/flutter (14463): The following assertion was thrown while dispatching notifications for
I/flutter (14463): PagewiseLoadController<dynamic>:
I/flutter (14463): setState() or markNeedsBuild() called during build.
I/flutter (14463): This PagewiseListView<dynamic> widget cannot be marked as needing to build because the framework is
I/flutter (14463): already in the process of building widgets. A widget can be marked as needing to be built during the
I/flutter (14463): build phase only if one of its ancestors is currently building. This exception is allowed because
I/flutter (14463): the framework builds parent widgets before children, which means a dirty descendant will always be
I/flutter (14463): built. Otherwise, the framework might not visit this widget during this build phase.
I/flutter (14463): The widget on which setState() or markNeedsBuild() was called was:
I/flutter (14463): PagewiseListView<dynamic>(state: PagewiseState<dynamic>#dafc8)
Need more of the stack trace and more code for your app (or the example) ... the below general is a logic error in your code ..
On May 13, 2019, at 11:29 PM, shua Talansky [email protected] wrote:
I get the following exception when trying to implement your example in my app
I/flutter (14463): ══╡ EXCEPTION CAUGHT BY FOUNDATION LIBRARY ╞════════════════════════════════════════════════════════ I/flutter (14463): The following assertion was thrown while dispatching notifications for I/flutter (14463): PagewiseLoadController
: I/flutter (14463): setState() or markNeedsBuild() called during build. I/flutter (14463): This PagewiseListView widget cannot be marked as needing to build because the framework is I/flutter (14463): already in the process of building widgets. A widget can be marked as needing to be built during the I/flutter (14463): build phase only if one of its ancestors is currently building. This exception is allowed because I/flutter (14463): the framework builds parent widgets before children, which means a dirty descendant will always be I/flutter (14463): built. Otherwise, the framework might not visit this widget during this build phase. I/flutter (14463): The widget on which setState() or markNeedsBuild() was called was: I/flutter (14463): PagewiseListView (state: PagewiseState #dafc8) — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/AbdulRahmanAlHamali/flutter_pagewise/issues/63?email_source=notifications&email_token=AAPQZ3LGEX34SSNU4F6D7ALPVIW3NA5CNFSM4HMVDKV2YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4GTSHFOQ, or mute the thread https://github.com/notifications/unsubscribe-auth/AAPQZ3PCV3QXNPOXB2E53ULPVIW3NANCNFSM4HMVDKVQ.
I too get a similar error. My code actually works fine, but the pageFuture keeps firing even if I make slight changes to what's displayed on the screen. I am trying to add a AsyncMemoizer
(as described in this article: https://medium.com/saugo360/flutter-my-futurebuilder-keeps-firing-6e774830bc2) which is causing the error below:
I/flutter ( 6677): ══╡ EXCEPTION CAUGHT BY FOUNDATION LIBRARY ╞════════════════════════════════════════════════════════
I/flutter ( 6677): The following assertion was thrown while dispatching notifications for
I/flutter ( 6677): PagewiseLoadController<dynamic>:
I/flutter ( 6677): setState() or markNeedsBuild() called during build.
I/flutter ( 6677): This PagewiseListView<dynamic> widget cannot be marked as needing to build because the framework is
I/flutter ( 6677): already in the process of building widgets. A widget can be marked as needing to be built during the
I/flutter ( 6677): build phase only if one of its ancestors is currently building. This exception is allowed because
I/flutter ( 6677): the framework builds parent widgets before children, which means a dirty descendant will always be
I/flutter ( 6677): built. Otherwise, the framework might not visit this widget during this build phase.
I/flutter ( 6677): The widget on which setState() or markNeedsBuild() was called was:
I/flutter ( 6677): PagewiseListView<dynamic>(state: PagewiseState<dynamic>#daaf9)
I/flutter ( 6677): The widget which was currently being built when the offending call was made was:
I/flutter ( 6677): SliverList(delegate: SliverChildBuilderDelegate#c5427(estimated child count: 1), renderObject:
I/flutter ( 6677): RenderSliverList#67457 relayoutBoundary=up2 NEEDS-LAYOUT NEEDS-PAINT)
I/flutter ( 6677):
I/flutter ( 6677): When the exception was thrown, this was the stack:
I/flutter ( 6677): #0 Element.markNeedsBuild.<anonymous closure> (package:flutter/src/widgets/framework.dart:3497:11)
I/flutter ( 6677): #1 Element.markNeedsBuild (package:flutter/src/widgets/framework.dart:3523:6)
I/flutter ( 6677): #2 State.setState (package:flutter/src/widgets/framework.dart:1138:14)
I/flutter ( 6677): #3 PagewiseState.initState.<anonymous closure> (package:flutter_pagewise/flutter_pagewise.dart:202:7)
I/flutter ( 6677): #4 ChangeNotifier.notifyListeners (package:flutter/src/foundation/change_notifier.dart:206:21)
I/flutter ( 6677): #5 PagewiseLoadController.fetchNewPage (package:flutter_pagewise/flutter_pagewise.dart:471:14)
I/flutter ( 6677): #7 PagewiseLoadController.fetchNewPage (package:flutter_pagewise/flutter_pagewise.dart:460:28)
I/flutter ( 6677): #8 PagewiseState._itemBuilder (package:flutter_pagewise/flutter_pagewise.dart:270:35)
I/flutter ( 6677): #9 SliverChildBuilderDelegate.build (package:flutter/src/widgets/sliver.dart:398:15)
I/flutter ( 6677): #10 SliverMultiBoxAdaptorElement._build.<anonymous closure> (package:flutter/src/widgets/sliver.dart:1002:67)
I/flutter ( 6677): #11 _HashMap.putIfAbsent (dart:collection/runtime/libcollection_patch.dart:137:29)
I/flutter ( 6677): #12 SliverMultiBoxAdaptorElement._build (package:flutter/src/widgets/sliver.dart:1002:26)
I/flutter ( 6677): #13 SliverMultiBoxAdaptorElement.createChild.<anonymous closure> (package:flutter/src/widgets/sliver.dart:1015:55)
I/flutter ( 6677): #14 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2253:19)
I/flutter ( 6677): #15 SliverMultiBoxAdaptorElement.createChild (package:flutter/src/widgets/sliver.dart:1008:11)
I/flutter ( 6677): #16 RenderSliverMultiBoxAdaptor._createOrObtainChild.<anonymous closure> (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:274:23)
I/flutter ( 6677): #17 RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:1728:58)
I/flutter ( 6677): #18 PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:797:15)
I/flutter ( 6677): #19 RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:1728:13)
I/flutter ( 6677): #20 RenderSliverMultiBoxAdaptor._createOrObtainChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:263:5)
I/flutter ( 6677): #21 RenderSliverMultiBoxAdaptor.addInitialChild (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:347:5)
I/flutter ( 6677): #22 RenderSliverList.performLayout (package:flutter/src/rendering/sliver_list.dart:78:12)
I/flutter ( 6677): #23 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter ( 6677): #24 RenderSliverPadding.performLayout (package:flutter/src/rendering/sliver_padding.dart:182:11)
I/flutter ( 6677): #25 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter ( 6677): #26 RenderViewportBase.layoutChildSequence (package:flutter/src/rendering/viewport.dart:407:13)
I/flutter ( 6677): #27 RenderViewport._attemptLayout (package:flutter/src/rendering/viewport.dart:1322:12)
I/flutter ( 6677): #28 RenderViewport.performLayout (package:flutter/src/rendering/viewport.dart:1240:20)
I/flutter ( 6677): #29 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter ( 6677): #30 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 6677): #31 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter ( 6677): #32 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 6677): #33 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter ( 6677): #34 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 6677): #35 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter ( 6677): #36 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 6677): #37 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter ( 6677): #38 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 6677): #39 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter ( 6677): #40 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 6677): #41 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter ( 6677): #42 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 6677): #43 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter ( 6677): #44 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 6677): #45 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter ( 6677): #46 MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:142:11)
I/flutter ( 6677): #47 _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:350:7)
I/flutter ( 6677): #48 MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:212:7)
I/flutter ( 6677): #49 RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:356:14)
I/flutter ( 6677): #50 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter ( 6677): #51 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 6677): #52 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter ( 6677): #53 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 6677): #54 _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1206:11)
I/flutter ( 6677): #55 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter ( 6677): #56 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 6677): #57 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter ( 6677): #58 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 6677): #59 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter ( 6677): #60 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 6677): #61 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter ( 6677): #62 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 6677): #63 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter ( 6677): #64 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter ( 6677): #65 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter ( 6677): #66 RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3030:14)
I/flutter ( 6677): #67 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter ( 6677): #68 RenderStack.performLayout (package:flutter/src/rendering/stack.dart:510:15)
I/flutter ( 6677): #69 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1507:7)
I/flutter ( 6677): #70 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:766:18)
I/flutter ( 6677): #71 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:329:19)
I/flutter ( 6677): #72 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:701:13)
I/flutter ( 6677): #73 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:268:5)
I/flutter ( 6677): #74 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:988:15)
I/flutter ( 6677): #75 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:928:9)
I/flutter ( 6677): #76 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:840:5)
I/flutter ( 6677): #80 _invoke (dart:ui/hooks.dart:209:10)
I/flutter ( 6677): #81 _drawFrame (dart:ui/hooks.dart:168:3)
I/flutter ( 6677): (elided 4 frames from package dart:async)
I/flutter ( 6677):
I/flutter ( 6677): The PagewiseLoadController<dynamic> sending notification was:
I/flutter ( 6677): Instance of 'PagewiseLoadController<dynamic>'
Any followup on this? I am having the issue and cannot figure out why. If I put this to test in pageFuture, it works fine
return Future.delayed(Duration(seconds: 10), () => [{'a':'Large Latte'}]);
But if I use http to get from my server, It gives the error
var response = await http.get ....
The following assertion was thrown while dispatching notifications for PagewiseLoadController
Any followup on this? I am having the issue and cannot figure out why. If I put this to test in pageFuture, it works fine
return Future.delayed(Duration(seconds: 10), () => [{'a':'Large Latte'}]);
But if I use http to get from my server, It gives the error
var response = await http.get ....
The following assertion was thrown while dispatching notifications for PagewiseLoadController: setState() or markNeedsBuild() called during build.
In my situation. After some debug, I found the real issue is the code like this: The right way:
onTap: () => so_something_that_create_widget
Mistake wrong way:
onTap: so_something_that_create_widget
same error!
This is my pageFuture: pageFuture: (pageIndex) => _loadData(pageIndex, pageSize)
I get this error when the return type of _loadData
is dynamic:
error:
_loadData(int? page, int? size) async {
return [1, 2, 3];
}
when I give the _loadData
a return type will work fine for me:
right:
Future<List<dynamic>> _loadData(int? page, int? size) async {
return [1, 2, 3];
}
If you guys use GetX, this issue solved for me by adding these lines on initState()
Future.delayed(Duration.zero, () { // <-- add this
_controller.attachments.clear(); // obx variable
_controller.commentRefresher.value = RefreshController(); // obx variable
});