Flutter:找不到 FutureBuilder 上面的 Provider

Flutter: could not find the Provider above FutureBuilder

我正在尝试导航到一个屏幕,其中取决于 3 个因素:

  1. 如果应用有运行之前或没有
  2. 用户是否为空
  3. 邮箱是否通过验证。

import 'package:client/providers/auth_provider.dart';
import 'package:flutter/material.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:provider/provider.dart';
import 'package:shared_preferences/shared_preferences.dart';

import '../screens/home_screen.dart';
import '../screens/login_screen.dart';

class Wrapper extends StatefulWidget {
  @override
  _WrapperState createState() => _WrapperState();
}

class _WrapperState extends State<Wrapper> {
  FirebaseAuth auth = FirebaseAuth.instance;

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext ctx) {
    return FutureBuilder(
        future: hasAlreadyStarted(),
        builder: (ctx, snapshot) {
          return Provider.of<User>(ctx) != null &&
                  snapshot.data == true &&
                  AuthProvider().isEmailVerified
              ? HomeScreen()
              : LoginScreen();
        });
  }

  Future<bool> hasAlreadyStarted() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    try {
      if (prefs.getBool("hasRun") == null) {
        await AuthProvider().logout();
        setState(() {
          prefs.setBool("hasRun", true);
        });
        return true;
      } else {
        return true;
      }
    } catch (error) {
      setState(() {
        prefs.setBool("hasRun", null);
      });
      return false;
    }
  }
}

屏幕本身工作正常,但是当我 Navigate 从不同的屏幕上显示错误时。

Could not find the correct Provider<User> above this FutureBuilder<bool> Widget

你能解释一下错误并给我一个解决方案吗?谢谢 :D

我只需要用 StreamProvider 包装整个 MaterialApp