Skip to content

[platform_channels] dependOnInheritedWidgetOfExactType<_ScaffoldMessengerScope>() or dependOnInheritedElement() was called before _PetListScreenState.initState() completed. #1479

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
0xZOne opened this issue Oct 18, 2022 · 4 comments

Comments

@0xZOne
Copy link
Member

0xZOne commented Oct 18, 2022

══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following assertion was thrown building Builder:
dependOnInheritedWidgetOfExactType<_ScaffoldMessengerScope>() or dependOnInheritedElement() was
called before _PetListScreenState.initState() completed.
When an inherited widget changes, for example if the value of Theme.of() changes, its dependent
widgets are rebuilt. If the dependent widget's reference to the inherited widget is in a constructor
or an initState() method, then the rebuilt dependent widget will not reflect the changes in the
inherited widget.
Typically references to inherited widgets should occur in widget build() methods. Alternatively,
initialization based on inherited widgets can be placed in the didChangeDependencies method, which
is called after initState and whenever the dependencies change thereafter.

The relevant error-causing widget was:
MaterialApp MaterialApp:file:///Users/zero/Dev/GitHub/samples/platform_channels/lib/main.dart:21:12

When the exception was thrown, this was the stack:
#0 StatefulElement.dependOnInheritedElement. (package:flutter/src/widgets/framework.dart:5130:9)
#1 StatefulElement.dependOnInheritedElement (package:flutter/src/widgets/framework.dart:5173:6)
#2 Element.dependOnInheritedWidgetOfExactType (package:flutter/src/widgets/framework.dart:4278:14)
#3 ScaffoldMessenger.of (package:flutter/src/material/scaffold.dart:148:51)
#4 _PetListScreenState.initState (package:platform_channels/src/pet_list_screen.dart:27:49)
#5 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5015:57)
#6 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4853:5)
... Normal element mounting (275 frames)
#281 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3863:16)
#282 MultiChildRenderObjectElement.inflateWidget (package:flutter/src/widgets/framework.dart:6435:36)
#283 Element.updateChild (package:flutter/src/widgets/framework.dart:3592:18)
#284 RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5964:32)
#285 MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6460:17)
#286 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#287 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#288 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
#289 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#290 StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
#291 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#292 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#293 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#294 ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
#295 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#296 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#297 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#298 ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
#299 _InheritedNotifierElement.update (package:flutter/src/widgets/inherited_notifier.dart:107:11)
#300 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#301 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6307:14)
#302 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#303 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#304 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
#305 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#306 StatefulElement.update (package:flutter/src/widgets/framework.dart:5082:5)
#307 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#308 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6307:14)
#309 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#310 SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6307:14)
#311 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#312 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#313 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#314 ProxyElement.update (package:flutter/src/widgets/framework.dart:5228:5)
#315 Element.updateChild (package:flutter/src/widgets/framework.dart:3570:15)
#316 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4904:16)
#317 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:5050:11)
#318 Element.rebuild (package:flutter/src/widgets/framework.dart:4604:5)
#319 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2667:19)
#320 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:882:21)
#321 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:378:5)
#322 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1175:15)
#323 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1104:9)
#324 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:1015:5)
#325 _invoke (dart:ui/hooks.dart:148:13)
#326 PlatformDispatcher._drawFrame (dart:ui/platform_dispatcher.dart:318:5)
#327 _drawFrame (dart:ui/hooks.dart:115:31)

════════════════════════════════════════════════════════════════════════════════════════════════════

@domesticmouse
Copy link
Contributor

@gaaclarke any ideas?

@0xZOne
Copy link
Member Author

0xZOne commented Oct 18, 2022

diff --git a/platform_channels/lib/src/pet_list_screen.dart b/platform_channels/lib/src/pet_list_screen.dart
index c3b7b005..b36a2b85 100644
--- a/platform_channels/lib/src/pet_list_screen.dart
+++ b/platform_channels/lib/src/pet_list_screen.dart
@@ -20,8 +20,8 @@ class _PetListScreenState extends State<PetListScreen> {
   final scaffoldKey = GlobalKey<ScaffoldState>();

   @override
-  void initState() {
-    super.initState();
+  void didChangeDependencies() {
+    super.didChangeDependencies();
     // Receives a string of json object from the platform and converts it
     // to PetModel.
     final scaffoldMessenger = ScaffoldMessenger.of(context);

@domesticmouse

@domesticmouse
Copy link
Contributor


diff --git a/platform_channels/lib/src/pet_list_screen.dart b/platform_channels/lib/src/pet_list_screen.dart

index c3b7b005..b36a2b85 100644

--- a/platform_channels/lib/src/pet_list_screen.dart

+++ b/platform_channels/lib/src/pet_list_screen.dart

@@ -20,8 +20,8 @@ class _PetListScreenState extends State<PetListScreen> {

   final scaffoldKey = GlobalKey<ScaffoldState>();



   @override

-  void initState() {

-    super.initState();

+  void didChangeDependencies() {

+    super.didChangeDependencies();

     // Receives a string of json object from the platform and converts it

     // to PetModel.

     final scaffoldMessenger = ScaffoldMessenger.of(context);

@domesticmouse

Please feel free to raise this as a PR. I can't accept the change as is as we need to enforce CLA on all submissions. Thanks!

@gaaclarke
Copy link
Member

@gaaclarke any ideas?

I don't, new to me. @0xZOne 's fix isn't familiar to me either, hopefully that works out. Let me know. Thanks @0xZOne .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants