【问题标题】:Flutter: could not find the Provider above FutureBuilderFlutter:找不到FutureBuilder上面的Provider
【发布时间】:2020-10-01 08:27:02
【问题描述】:

我正在尝试导航到取决于 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

【问题讨论】:

    标签: flutter provider flutter-futurebuilder


    【解决方案1】:

    我只需要用 StreamProvider 封装整个 MaterialApp

    【讨论】:

      猜你喜欢
      • 2021-07-16
      • 2021-09-29
      • 1970-01-01
      • 2021-04-29
      • 2023-04-01
      • 1970-01-01
      • 2021-11-13
      • 2021-07-25
      • 1970-01-01
      相关资源
      最近更新 更多