我已经用flutter和firebase为一个特定的帖子创建了一个集合和子集合。当用户按下一个按钮时,当前用户的信息会存储在firebasefirestore子集合中。现在我希望当帖子的所有者进入一个特定的屏幕时,他会看到一个点击按钮的用户列表。我该怎么做呢?我的UI是不必要的。
这是我曾经尝试过的:
import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:hitch_ride/model/ads_model.dart';
import 'package:hitch_ride/model/user_model.dart';
import 'package:hitch_ride/serives/auth_provider.dart';
import 'package:provider/provider.dart';
class NotificationScreen extends StatefulWidget {
const NotificationScreen({super.key});
@override
State<NotificationScreen> createState() => _NotificationScreenState();
}
class _NotificationScreenState extends State<NotificationScreen> {
@override
Widget build(BuildContext context) {
final screenHeight = MediaQuery.of(context).size.height;
final screenWidth = MediaQuery.of(context).size.width;
final authProvider = Provider.of<AuthProvider>(context, listen: false);
return Scaffold(
body: Column(
children: [
Container(
padding: const EdgeInsets.only(right: 15, left: 15),
alignment: Alignment.center,
height: screenHeight * 0.07,
width: screenWidth,
color: Colors.blue,
child: Text(
'Requests',
style: GoogleFonts.diplomata(fontSize: 25),
),
),
GestureDetector(
onTap: retrieveDoc,
child: Text(
'Press',
style: TextStyle(color: Colors.blue, fontSize: 20),
),
)
],
),
);
}
Future<void> retrieveDoc() async {
var userId = FirebaseAuth.instance.currentUser!.uid;
AdsModel? adsModel;
UserModel userModel;
FirebaseFirestore.instance
.collection('ADS')
.where(adsModel!.uid.toString(), isEqualTo: userId.toString())
.get()
.then((value) {
value.docs.forEach((result) {
FirebaseFirestore.instance
.collection('ADS')
.doc(result.id)
.collection('Requests')
.get()
.then((subcol) {
subcol.docs.forEach((element) {
print(element.data());
});
});
});
});
}
}
adsModel将帖子存储在集合"ADS"中。子集合是"Requests"子集合。用户将当前用户信息存储在集合名称"users"中。
我需要帮助请..
1条答案
按热度按时间qco9c6ql1#
如果您在
ADS
中以用户的UID命名文档,那么您可以很容易地为具有以下条件的用户找到包含所有Requests
的集合:如果您想在UI中显示所有这些
Requests
,请将其onSnapshot
侦听器 Package 在StreamBuilder
中,如关于侦听实时更新的文档中的第二个示例所示。