如何从数据库实时更新数据?

时间:2019-05-03 18:09:39

标签: flutter

我将构建一个应用程序,用于从http提取数据。 后端是PHP,在页面上它显示了phpmyadim数据库。

在扑朔迷离中,我想获取数据并将其显示在列表视图中。当数据更改时,我希望列表视图自动重新加载。

我的问题是我应该使用未来构建器还是流构建器?以及我该怎么做。

3 个答案:

答案 0 :(得分:0)

您无法使用HTTP请求实时更新数据。只有套接字可以允许实时通信。在这种情况下,您需要使用websocket。泰斯人可能会帮助您:

Websockets in PHP

Websockets in Flutter

答案 1 :(得分:0)

FutureBuilder使您能够从服务器中获取异步数据,作为单个函数调用,最后以获取数据为单。同时,StreamBuilder动态反映基础流中的任何更改。这是适合您的情况。至于如何执行它。有许多方法可以做到这一点,并且在不提供更多详细信息的情况下(例如,预期基础数据中将进行什么样的更新),无论是项目数还是项目字段中的更改,没有人可以为您提供特定于案例的信息例子。

答案 2 :(得分:0)

当您的数据非常频繁地更改时(例如在聊天会话期间),

WebSockets是一个很好的选择。否则,我建议使用Firebase Cloud Messaging,它将在您打开应用程序时为您提供在线数据更新,并在应用程序关闭时推送通知。

在您的根窗口小部件中

  final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();

  @override
  void initState() {

    super.initState();

    _firebaseMessaging.configure(
        onMessage: (Map<String, dynamic> message) async {
           // or use setState
          _bloc.dispatch(new LoadMyCalendar());
        }
    );

第二部分是在数据更改时从Web服务器应用程序调用Firebase API