所以我想在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()));
}
}
});
});
}
}