title: Why is key required in constructor?
body: <p>I have created class which extend <code>StatefulWidget</code></p>
  <pre><code>class RegistrationPage extends StatefulWidget {
    final String email;
  
    const RegistrationPage({Key key, required this.email}) : super(key: key);
  
    @override
    _RegistrationPage createState() =&gt; _RegistrationPage();
  }
  </code></pre>
  <p>The problem is android studio force me to put <code>required</code> before <code>Key key</code>. I googled some of examples how to pass values from screen to another screen and I have never seen that someone used required with Key.
  I do it within:</p>
  <pre><code>Navigator.push(
          context,
          new MaterialPageRoute(
            builder: (context) =&gt; RegistrationPage(email: email),
          ),
        );
  </code></pre>
  <p>so just to pass email value. I need to make Key nullable to make it work.
  Am I doing something wrong?</p>