ChangeNotifierProxy Provider & ChangeNotifier Provider 在应用刷新时失去价值
ChangeNotifierProxy Provider & ChangeNotifier Provider loses value when app is refreshed
我正在使用 ChangeNotifierProxyProvider 提供一个名为 DatabaseService 的 class。提供商如下所示
ChangeNotifierProxyProvider<AuthService, DatabaseService>(
create:(_)=> DatabaseService() ,
update: (_,AuthService authService, DatabaseService databaseService)=> databaseService..update(authService.currentUserId),
),
这里是DatabaseService中的update函数
void update (String uid)async {
if(uid==this.uid) return;
this.uid=uid;
notifyListeners();
print("USER ID IS : " + uid); }
当用户登录时,数据库class 成功获取uid,调用Provider.of(context).uid 工作正常。问题是当我刷新应用程序时,uid 重置回其默认值。如何防止刷新应用后数值被重置
所以我得出一个结论,provider 不会持久化数据。这意味着当应用程序在模拟器中被终止或刷新时,提供程序值将重置。为了解决我的问题,我使用共享首选项来解决我的数据持久性问题。
我正在使用 ChangeNotifierProxyProvider 提供一个名为 DatabaseService 的 class。提供商如下所示
ChangeNotifierProxyProvider<AuthService, DatabaseService>(
create:(_)=> DatabaseService() ,
update: (_,AuthService authService, DatabaseService databaseService)=> databaseService..update(authService.currentUserId),
),
这里是DatabaseService中的update函数
void update (String uid)async {
if(uid==this.uid) return;
this.uid=uid;
notifyListeners();
print("USER ID IS : " + uid); }
当用户登录时,数据库class 成功获取uid,调用Provider.of(context).uid 工作正常。问题是当我刷新应用程序时,uid 重置回其默认值。如何防止刷新应用后数值被重置
所以我得出一个结论,provider 不会持久化数据。这意味着当应用程序在模拟器中被终止或刷新时,提供程序值将重置。为了解决我的问题,我使用共享首选项来解决我的数据持久性问题。