gpt4 book ai didi

flutter - 登录的用户无法进入主页( flutter )

转载 作者:行者123 更新时间:2023-12-03 03:49:13 26 4
gpt4 key购买 nike

它可能很简单,但是我是一个初学者,我不明白我的错误,我想让已经创建帐户的用户直接进入主页...
当我启动调试时,它告诉:
“错误:在此Passerelle小部件上方找不到正确的提供者
发生这种情况的可能是因为您使用了不包含提供程序的BuildContext你的选择。有几种常见方案:

  • 您尝试读取的提供程序位于另一条路由中。
    提供者是“范围”的。因此,如果您将提供商插入路由内,则
    其他路由将无法访问该提供商。
  • 您使用的BuildContext是您尝试读取的提供程序的祖先。
    确保Passerelle在您的MultiProvider / Provider之下。
    当您创建提供程序并尝试立即读取它时,通常会发生这种情况。”

  • 这是我的代码,谢谢您的帮助
    import 'package:firebase_auth/firebase_auth.dart';
    import 'package:flutter/material.dart';
    import 'package:cloud_firestore/cloud_firestore.dart';
    import 'package:provider/provider.dart';
    import 'package:dogos/HomePage.dart';
    import 'package:dogos/pageAuth/inscription.dart';


    class Utilisateur {
    String idUtil;

    Utilisateur({ this.idUtil });
    }

    class DonneesUtil {

    String email;
    String nomComplet;

    DonneesUtil({ this.email, this.nomComplet });
    }

    class StreamProviderAuth {
    final FirebaseAuth _auth = FirebaseAuth.instance;

    //creation d'un obj utilisateur provenant de la classe firebaseUser
    Utilisateur _utilisateurDeFirebaseUser(FirebaseUser user){
    return user != null ? Utilisateur(idUtil: user.uid) : null;
    }

    //la difussion de l'auth de l'utilisateur

    Stream<Utilisateur> get utilisateur {
    return _auth.onAuthStateChanged.map(_utilisateurDeFirebaseUser);
    }
    }


    class Passerelle extends StatefulWidget {
    @override
    _PasserelleState createState() => _PasserelleState();
    }

    class _PasserelleState extends State<Passerelle> {
    @override
    Widget build(BuildContext context) {
    final utilisateur = Provider.of<Utilisateur>(context);

    if (utilisateur == null) {
    return Inscription();
    } else {
    return HomePage();
    }
    }
    }


    class IntroductionPage extends StatefulWidget {

    @override
    _IntroductionPageState createState() => _IntroductionPageState();
    }

    class _IntroductionPageState extends State<IntroductionPage> {


    FirebaseAuth _auth = FirebaseAuth.instance;
    FirebaseUser currentUser;

    getCurrentUser() async {
    currentUser = await _auth.currentUser();
    print("from get getCurrent user ${currentUser.email}");
    }

    void initState() {
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((_) async {
    Future.delayed(const Duration(milliseconds: 1000), () {
    Navigator.push(context,
    MaterialPageRoute(builder: (BuildContext context) => Passerelle()));
    });
    });
    }





    @override
    Widget build(BuildContext context) {

    return Scaffold(

    body: Column(
    children: <Widget>[
    Expanded (
    child: Container(
    color: Colors.blue,
    alignment: Alignment.center,

    ),
    ),

    Container(
    child: Image.asset("assets/logo.jpg"),
    ),

    Expanded (
    child:Container(
    color: Color(0xff3b57fe),
    alignment: Alignment.center,


    ),
    ),

    ],
    ),
    );
    }
    }




    class GetCurrentUserData {
    String idUtil;
    GetCurrentUserData({ this.idUtil });

    //la reference de la collection utilisateur
    final CollectionReference collectionUtil = Firestore.instance.collection('utilisateurs');

    DonneesUtil _donneesUtilDeSnapshot(DocumentSnapshot snapshot){
    return DonneesUtil(
    nomComplet: snapshot['nomComplet'],
    email: snapshot['emailUtil'],
    );
    }

    //obtention doc util en Stream
    Stream<DonneesUtil> get donneesUtil {
    return collectionUtil.document(idUtil).snapshots()
    .map(_donneesUtilDeSnapshot);
    }

    }

    最佳答案

    您应该在每个页面中获得当前用户。并且由于您要返回PasserelleMaterialPageRoute,因此您应该在此页面中检查当前用户。

    关于flutter - 登录的用户无法进入主页( flutter ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64287274/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com