我有一个应用程序,我使用 StreamProvider 从 Firestore 获取数据并在应用程序中传递它。虽然它按我的意愿工作,但当我从不同的用户 ID 注销并再次登录时会出现问题,它仍然显示来自第一个用户的数据。我该怎么做才能确保 StreamProvider 在用户注销时处理当前值,并在新用户登录时重新获取正确的用户数据?这是我的代码
main.dart
val list = listOf(0,1,2,3,4,5,0)
val mutableList = mutableListOf()
val set = HashSet<String>()
for(l in list) {
if(set.contains(l)) mutableList.add(l)
set.add(l)
}
db.getAppointments() 方法
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
final db = Database();
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
Provider<AuthenticationService>(
create: (_) => AuthenticationService(FirebaseAuth.instance),
),
StreamProvider(
// key: ObjectKey(FirebaseAuth.instance.currentUser.uid),
create: (context) =>
context.read<AuthenticationService>().authStateChanges,
),
ChangeNotifierProvider<AppointmentProvider>(
create: (_) => AppointmentProvider(),
),
StreamProvider(
catchError: (context, error) {
print(error);
},
create: (BuildContext context) => db.getAppointments(),
),
],
child: MaterialApp(
key: GlobalObjectKey(context),
debugShowCheckedModeBanner: false,
title: 'Hospital App',
theme: appTheme,
home: AuthenticationWrapper(),
),
);
}
}