【问题标题】:Flutter/ Dart Users sharing same screen at the same timeFlutter/ Dart 用户同时共享同一个屏幕
【发布时间】:2021-07-06 16:56:38
【问题描述】:

我从 API 接收数据并将其显示在特定页面中。我想动态显示数据,当用户从列表视图构建器中选择一个对象时,它会自动刷新数据库并将其从其他用户的屏幕中删除。 为此,我认为 StreamBuilder 将是最佳选择,基于此Multiuser application using flutter。 我希望有人可以帮助我:)

未来:

class OrdersBloc {
  Future<List<OrdersModel>> getOrders() async {
    try {
      WooCommerceAPI wooCommerceAPI = WooCommerceAPI(
        url: urlWC,
        consumerKey: consumerKeyWC,
        consumerSecret: consumerSecretWC,
      );

      List<OrdersModel> ordersList = [];
      var listOrders = await wooCommerceAPI.getAsync(statusProcessing);

      for (var item in listOrders) {
        ordersList.add(OrdersModel.fromJson(item));
      }

      return ordersList;
    } catch (e) {
      print(e);
      return null;
    }
  }
}

FutureBuilder:

         FutureBuilder(
          future: OrdersBloc().getOrders(),
          builder: (BuildContext context, AsyncSnapshot snapshot) {
            switch (snapshot.connectionState) {
              case ConnectionState.done:
                return ListView.builder(
                  scrollDirection: Axis.horizontal,
                  shrinkWrap: true,
                  padding: EdgeInsets.only(bottom: 10),
                  itemCount: snapshot.data != null ? snapshot.data.length : 0,
                  itemBuilder: (BuildContext context, int index) {
                    OrdersModel orderItem = snapshot.data[index];
                    return Container(...);

谢谢!!

【问题讨论】:

    标签: flutter dart stream-builder flutter-listview flutter-futurebuilder


    【解决方案1】:

    要使用 StreamBuilder,您的数据源必须是 Stream,并且要将 Stream 作为数据源,您的数据库应该是实时数据库。您无法使用基于 HTTP 请求/响应的数据库实现该功能,您的数据库应该与所有设备建立套接字连接,以便在数据更新时能够向所有设备发送数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      相关资源
      最近更新 更多