【问题标题】:Firebase update database just before internet disconnectFirebase 在互联网断开之前更新数据库
【发布时间】:2022-12-16 10:02:45
【问题描述】:
Future<void> setActiveDataToApi(
String referencePath1, String referencePath2, bool activeState) async {
await _firestore
.collection(referencePath1)
.doc(referencePath2)
.update({"active": activeState});
我想在互联网断开之前更新用户活动状态,我该怎么做?
这是更新我的数据库的数据,我也会更新时间戳,但如果我定期更新数据,比如 10 秒,这会花费我太多,Firestore 不存在 OnDisconnect()/onDisconnectSetValue() 函数,我认为它不适用于互联网关闭应用程序。我使用 firebase/cloud firestore
【问题讨论】:
标签:
flutter
firebase
firebase-realtime-database
google-cloud-firestore
【解决方案1】:
你可以使用 AppLifeCycle 来实现这个!
https://api.flutter.dev/flutter/widgets/WidgetsBindingObserver-class.html
class _CustomState
extends State<WidgetBindingsObserverSample> with WidgetsBindingObserver {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
if(state==AppLifecycleState.paused){
_syncStatus(status: <Update DB value to offline> );
return;
}
if(state== AppLifecycleState.resumed){
_syncStatus(status: <Update DB value to online> );
return;
}
}
}
注意:这只是一个示例,可以进一步优化和改进
如果你想实际更新状态,无论用户是否连接到网络,你可以使用connectivity_plus,这个过程可能不同,你将不得不监听包中提供的 api 的任何网络变化并调用你api取决于你想更新哪个连接状态