title: Could not find the correct Provider inconsistent behaviour
body: <p>Hi I'm new to Flutter and Provider and can't make sense of this error. Basically I'm using <code>MultiProvider</code> to manage the states like below, and this works really great for one of them (Auth) but not other(User) even though I'm using them in the same way.
  I get this error. </p>
  
  <p><code>Note there are actually more providers, but simplified it for sake of simpler code example</code></p>
  
  <h3>Error</h3>
  
  <pre class="lang-sh prettyprint-override"><code>════════ Exception caught by widgets library ═══════════════════════════════════════════════════════
  The following ProviderNotFoundException was thrown building StartPage(dirty, dependencies: [_InheritedProviderScope&lt;Auth&gt;, _InheritedProviderScope&lt;UserLocation&gt;, _InheritedProviderScope&lt;UserState&gt;, _InheritedProviderScope&lt;BottomNavigationBarProvider&gt;]):
  Error: Could not find the correct Provider&lt;User&gt; above this StartPage Widget
  
  To fix, please:
  
    * Ensure the Provider&lt;User&gt; is an ancestor to this StartPage Widget
    * Provide types to Provider&lt;User&gt;
    * Provide types to Consumer&lt;User&gt;
    * Provide types to Provider.of&lt;User&gt;()
    * Ensure the correct `context` is being used.
  
  If none of these solutions work, please file a bug at:
  
  </code></pre>
  
  <h3>Main.dart</h3>
  
  <pre class="lang-dart prettyprint-override"><code>class SchoolApp extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
      return MaterialApp(
          title: 'Flutter Demo',
          home: MultiProvider(
            providers: [
              ChangeNotifierProvider(create: (_) =&gt; Auth()),
              ChangeNotifierProvider(create: (_) =&gt; User()),
            ],
            child: HomePage(),
          ));
    }
  }
  
  class HomePage extends StatefulWidget {
    @override
    State&lt;StatefulWidget&gt; createState() =&gt; new _HomePageState();
  }
  
  class _HomePageState extends State&lt;HomePage&gt; {
    @override
    Widget build(BuildContext context) {
      UserState _userState = Provider.of&lt;UserState&gt;(context);
      switch (_userState.status) {
        case UserStatus.UnAuthenticated:
          return LoginScreen();
        case UserStatus.Authenticated:
          return StartPage();
      }
    }
  }
  
  </code></pre>
  
  <h3>StartPage.dart</h3>
  
  <pre class="lang-dart prettyprint-override"><code>class StartPage extends StatelessWidget with ChangeNotifier {
  
    Timer timer;
  
    @override
    Widget build(BuildContext context) {
      final _auth = Provider.of&lt;Auth&gt;(context);
      final _user = Provider.of&lt;User&gt;(context, listen: true);
  ...
  </code></pre>
  
  <h3>User.dart</h3>
  
  <pre class="lang-dart prettyprint-override"><code>class User extends ChangeNotifier{
    Firestore db = Firestore.instance;
  
    String _userId, _firstName, _lastName, _school, _email, _description, _employer, _title, _name;
    List&lt;String&gt; _ideologies, _interests, _religions;
    UserType _userType;
  ...
  </code></pre>
  
  <h3>Auth.dart</h3>
  
  <pre class="lang-dart prettyprint-override"><code>class Auth extends ChangeNotifier {
    final FirebaseAuth _firebaseAuth = FirebaseAuth.instance;
  
    Future&lt;String&gt; signInWithEmailAndPassword(String email, String password) async {
      final AuthResult authResult = await _firebaseAuth.signInWithEmailAndPassword(email: email, password: password);
      notifyListeners();
      return authResult.user.uid.toString();
    }
  ...
  </code></pre>