title: Flutter: Get passed arguments from Navigator in Widget's state's initState
body: <p>I have a <code>StatefulWidget</code> which I want to use in named route. I have to pass some arguments which I am doing as suggested in <a href="https://flutter.dev/docs/cookbook/navigation/navigate-with-arguments" rel="noreferrer">https://flutter.dev/docs/cookbook/navigation/navigate-with-arguments</a> i.e.</p>
  
  <pre><code>Navigator.pushNamed(
        context,
        routeName,
        arguments: &lt;args&gt;,
      );
  </code></pre>
  
  <p>Now, I need to access these argument's in the state's <code>initState</code> method as the arguments are needed to subscribe to some external events. If I put the <code>args = ModalRoute.of(context).settings.arguments;</code> call in <code>initState</code>, I get a runtime exception.</p>
  
  <pre><code>20:49:44.129 4 info flutter.tools I/flutter ( 2680): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
  20:49:44.129 5 info flutter.tools I/flutter ( 2680): The following assertion was thrown building Builder:
  20:49:44.129 6 info flutter.tools I/flutter ( 2680): inheritFromWidgetOfExactType(_ModalScopeStatus) or inheritFromElement() was called before
  20:49:44.130 7 info flutter.tools I/flutter ( 2680): _CourseCohortScreenState.initState() completed.
  20:49:44.130 8 info flutter.tools I/flutter ( 2680): When an inherited widget changes, for example if the value of Theme.of() changes, its dependent
  20:49:44.131 9 info flutter.tools I/flutter ( 2680): widgets are rebuilt. If the dependent widget's reference to the inherited widget is in a constructor
  20:49:44.131 10 info flutter.tools I/flutter ( 2680): or an initState() method, then the rebuilt dependent widget will not reflect the changes in the
  20:49:44.131 11 info flutter.tools I/flutter ( 2680): inherited widget.
  20:49:44.138 12 info flutter.tools I/flutter ( 2680): Typically references to inherited widgets should occur in widget build() methods. Alternatively,
  20:49:44.138 13 info flutter.tools I/flutter ( 2680): initialization based on inherited widgets can be placed in the didChangeDependencies method, which
  20:49:44.138 14 info flutter.tools I/flutter ( 2680): is called after initState and whenever the dependencies change thereafter.
  20:49:44.138 15 info flutter.tools I/flutter ( 2680): 
  20:49:44.138 16 info flutter.tools I/flutter ( 2680): When the exception was thrown, this was the stack:
  20:49:44.147 17 info flutter.tools I/flutter ( 2680): #0      StatefulElement.inheritFromElement.&lt;anonymous closure&gt; (package:flutter/src/widgets/framework.dart:3936:9)
  20:49:44.147 18 info flutter.tools I/flutter ( 2680): #1      StatefulElement.inheritFromElement (package:flutter/src/widgets/framework.dart:3969:6)
  20:49:44.147 19 info flutter.tools I/flutter ( 2680): #2      Element.inheritFromWidgetOfExactType (package:flutter/src/widgets/framework.dart:3285:14)
  20:49:44.147 20 info flutter.tools I/flutter ( 2680): #3      ModalRoute.of (package:flutter/src/widgets/routes.dart:698:46)
  20:49:44.147 21 info flutter.tools I/flutter ( 2680): #4      _CourseCohortScreenState.initState.&lt;anonymous closure&gt; (package:esk2/cohort_screen.dart:57:23)
  </code></pre>
  
  <p>I do not want to put that logic in <code>build</code> method as <code>build</code> could be called multiple times and the initialization needs to happen only once. I could put the entire logic in a block with a boolean isInitialized flag, but that does not seem like the right way of doing this.
    Is this requirement/case not supported in flutter as of now?</p>