我正在添加一个按钮在我的颤音应用程序,允许用户删除他们的帐户。我还想同时删除防火墙中的用户文档。我试图使用下面的代码来实现这一点,但面临一个错误。
在下面的代码中,我得到的用户uid与用户的doc名称相同:
CollectionReference users = FirebaseFirestore.instance.collection('users');
final FirebaseAuth auth = FirebaseAuth.instance;
final User? user = auth.currentUser;
final uid = user?.uid;
final authService = Provider.of<AuthService>(context);现在,我将删除用户集合中当前用户的文档:
ElevatedButton(
onPressed: ()async{
await users.doc(uid).delete(); //delete doc
user!.delete().then((value) async { //delete user
await authService.signOut();
Navigator.pushAndRemoveUntil(
context,
MaterialPageRoute(
builder: (context) => LoginScreen(),
),
(Route<dynamic> route) => false);
});
},但这会在按下时抛出一个错误:
type 'Null' is not a subtype of type 'Map<String, dynamic>' in type cast
The relevant error-causing widget was
StreamBuilder<DocumentSnapshot<Object?>>
lib\screens\quiz_screen.dart:616
When the exception was thrown, this was the stack
#0 CoinsContainer.build.<anonymous closure>
lib\screens\quiz_screen.dart:630这个错误在任何我有Streambuilder的地方都会重复。为什么会发生此错误,我还需要如何从防火墙中删除当前的用户文档?
发布于 2022-03-22 12:36:10
当使用它们的页面弹出时,您是否释放这些流?在我看来,删除用户似乎很好,但是您的流随后尝试从Firestore中获取已删除用户的数据。
https://stackoverflow.com/questions/71571894
复制相似问题