firebase 如何让firestore数据只在线?

i34xakig  于 2022-11-25  发布在  其他
关注(0)|答案(3)|浏览(142)

我想让用户在我的flutter应用程序中访问firestore数据,只有当他们在线时。
我希望firestore数据不能存储在缓存中,这样用户只有在在线时才能得到数据。

wmvff8tz

wmvff8tz1#

听起来你的问题只是问如何禁用任何持久性以确认你的应用只接收最新的数据。你可以通过你的Firebase设置来配置。下面是文档中的一段代码。

// Apple and Android
db.settings = const Settings(persistenceEnabled: true);

// Web
await db
    .enablePersistence(const PersistenceSettings(synchronizeTabs: true));

有关详细信息,请参阅Access数据脱机文档

uz75evzq

uz75evzq2#

你可以通过使用connectivity_plus: ^3.0.2包来检查互联网,有了这个包,你可以应用你关于连接的逻辑...

mzsu5hc0

mzsu5hc03#

你可以检查互联网通过使用connectivity_plus: ^3.0.2包,所以你可以禁用删除按钮,如果没有互联网
您的代码将如下所示:

YourAppState{
    ConnectivityResult _connectionStatus = ConnectivityResult.none;
    final Connectivity _connectivity = Connectivity();
    late StreamSubscription<ConnectivityResult> _connectivitySubscription;

  @override
   void initState() {
   super.initState();
   _connectivitySubscription_connectivity.onConnectivityChanged.listen(_updateConnectionStatus);
  }

   Future<void> _updateConnectionStatus(ConnectivityResult result) async {
     setState(() {
       _connectionStatus = result;
     });
      if (_connectionStatus.toString() == "ConnectivityResult.none") {
         navigatorKey.currentState!.popUntil((route) => route.isFirst);
        }
    }

}
然后在您的小部件上写入以下条件

if(_connectionStatus.toString() != "ConnectivityResult.none")

现在,如果没有互联网连接,则该小部件不会出现

相关问题