代码之家  ›  专栏  ›  技术社区  ›  Lucas Knötig

FirebaseAuth。例子currentUser!。然后那就没有定义了

  •  0
  • Lucas Knötig  · 技术社区  · 4 年前

    所以我想在Flatter中对我的应用程序实现基于角色的身份验证。只有具有权限的用户才能访问此网站。我得到了一个错误:

    没有为类型“User”定义方法“then”。 尝试将名称更正为现有方法的名称,或定义名为“then”的方法。

    我已经试着解决了两个小时了,但每个教程都过时了,或者不适合我的用例。

    身份验证处理程序的完整代码:

    import 'package:cloud_firestore/cloud_firestore.dart';
    import 'package:flutter/material.dart';
    import 'package:flutter/widgets.dart';
    import 'package:firebase_auth/firebase_auth.dart';
    import 'package:learnon/screens/lehrerstartpage.dart';
    
    
    import '../screens/startscreen.dart';
    import '../screens/auth_screen.dart';
    
    class AutoLoginHandler extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return StreamBuilder<User?>(
          //Streambuilder looks if data is avaliable
          stream: FirebaseAuth.instance.authStateChanges(),
          builder: (context, snapshot) {
            if (snapshot.hasData && snapshot.data != null) {
              return MainPage(); //when data here goto Startscreen
            }
            return LoginScreen(); //when no data is here goto Login
          },
        );
      }
    
    final FirebaseAuth auth = FirebaseAuth.instance;
    
      authorizeAccess(BuildContext context) {
        
        FirebaseAuth.instance.currentUser!.then((user) {
          FirebaseFirestore.instance
              .collection('/users')
              .where('uid', isEqualTo: user.uid)
              .get()
              .then((results) {
       if (results.size > 0) {
              if (results.docs[0].data()['role'] == 'admin') 
             {
                Navigator.of(context).push(new 
       MaterialPageRoute(
                    builder: (BuildContext context) => new 
       LehrerMainPage()));
              }
       }
    });
        });
      }
    }
    
    
    0 回复  |  直到 4 年前