我正在使用flutter和redux进行状态管理。当应用程序加载时,我正在从 firestore 加载数据以填充我的 redux 状态。现在的问题是每次应用程序初始化时都会读取 800 多个文档。用户数据更改的唯一来源是应用程序本身,并且由于启用了 Firestore 本地持久性,不应该从本地缓存加载数据吗?..我错过了什么?
有趣的是,如果我禁用与设备的互联网连接,加载应用程序然后启用连接,应用程序仍然可以正常工作(可能没有从应用程序初始化过程中读取文档,因为它们来自缓存)。
基本上,所需的行为是应用程序使用本地数据进行初始化,然后仅将用户所做的更新同步到 firebase 服务器。
class _MyAppState extends State<MyApp> {
final store = new Store<AppState>(
appReducer,
initialState: new AppState(isLoading: true, logs: []),
middleware: [thunkMiddleware]);
initState(){
super.initState();
loadData();
}
loadData(){
FirebaseAuth.instance.currentUser().then( (loggedInUser) async {
if(loggedInUser==null){
store.dispatch(SetUser(null));
}
QuerySnapshot logsQuery = await Firestore.instance.collection("/users/"+loggedInUser.uid+"/logs").getDocuments();
List<Log> logs = [];
final logDocs = logsQuery.documents;
for (DocumentSnapshot logDoc in logDocs) {
logs.add(Log.fromFireStoreData(logDoc.documentID, logDoc.data));
}
store.dispatch(SetUserLogs(logs));
}
}
...
}