如何解决管理员角色 - 用户名为 null
每个用户都有一个分配给他们的管理员角色。需要此管理员角色才能显示或隐藏小部件。
我收到一条错误消息,提示 admin 在 null 上被调用。
尽管获取了其他小部件的用户数据,但我没有从 firebase 正确接收到 Admin 角色的调用者。
FirebaseUser currentUser;
bool isAdmin= false;
Widget adminFeature() {
if(isAdmin == true) {
return Text("You are an admin");
} else {
return Container();
}
}
_getProfileData(User user,AuthNotifier authNotifier) async {
final uid = await Provider.of(context).auth.getCurrentUID();
await Provider.of(context)
.db
.collection('userData')
.document(uid)
.get().then((result) {
user.isAdmin = result.data['isAdmin'];
});
}
floatingActionButtonLocation:
FloatingActionButtonLocation.centerDocked,floatingActionButton:
FutureBuilder(
future: _getProfileData(user,authNotifier),builder: (context,snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
isAdmin = user.isAdmin ?? false;
}
return Container(
child: Column(
children: <Widget>[
FloatingActionButton(
backgroundColor:CompanyColors.blue[500],child: const Icon(Icons.add),onPressed: () {
var foodNotifier = Provider.of<FoodNotifier>(context,listen: false);
foodNotifier.currentFood = null;
Navigator.of(context).push(
MaterialPageRoute(builder: (BuildContext context) {
return FoodForm(
isUpdating: false,);
}),);
},),adminFeature(),]
解决方法
试试:
_getProfileData(User user,AuthNotifier authNotifier) async {
final uid = await Provider.of(context).auth.getCurrentUID();
return await Provider.of(context)
.db
.collection('userData')
.document(uid)
.get();
}
然后在 FutureBuilder
中:
future: _getProfileData(user,authNotifier),builder: (context,snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
isAdmin = snapshot.data['isAdmin'] ?? false;
}
返回方法的结果并将 result.data['isAdmin']
赋值给 isAdmin
变量。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。