【问题标题】: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取决于你想更新哪个连接状态

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-10
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多