我可以使用 streamBuilder 从 Api 获取实时数据吗

Posted

技术标签:

【中文标题】我可以使用 streamBuilder 从 Api 获取实时数据吗【英文标题】:Can I use streamBuilder in fetching live data from an Api 【发布时间】:2020-11-09 02:08:14 【问题描述】:

大家好。我正在制作一个足球比分实时数据应用程序。我不知道如何解决这个问题,如果我使用 http.get,我将不得不每次刷新以获取最近的数据。我不知道 streamBuilder 是否可以工作以及如何去做。提前感谢您的帮助。

【问题讨论】:

请尝试一次:- ***.com/a/57565501/8388068 【参考方案1】:

正如docs 中所解释的,StreamBuilder 是一个:

根据与 Stream 交互的最新快照构建自身的小部件。

因此,要使用它,首先您需要创建一个提供数据的 Stream,将其传递给 StreamBuilder 的 stream 属性,然后在 builder 属性中根据快照数据构建小部件。

这是一个简短的示例,它使用Stream.periodic 每 5 秒返回一次未来并产生未来调用:

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;

class PeriodicRequester extends StatelessWidget 
  Stream<http.Response> getRandomNumberFact() async* 
    yield* Stream.periodic(Duration(seconds: 5), (_) 
      return http.get("http://numbersapi.com/random/");
    ).asyncMap((event) async => await event);
  

  @override
  Widget build(BuildContext context) 
    return StreamBuilder<http.Response>(
      stream: getRandomNumberFact(),
      builder: (context, snapshot) => snapshot.hasData
          ? Center(child: Text(snapshot.data.body))
          : CircularProgressIndicator(),
    );
  


【讨论】:

以上是关于我可以使用 streamBuilder 从 Api 获取实时数据吗的主要内容,如果未能解决你的问题,请参考以下文章

FirebaseStorage + Flutter,streamBuilder?

从 mysql 获取数据到 StreamBuilder Flutter

如何使用 StreamBuilder 将数据从 firebase firestore 检索到颤振中,并使用 ListView.builder 显示值?

如何在颤动中直接将数据从 StreamBuilder 获取到 GridView 中?

Flutter 在使用 StreamBuilder 从 firebase 加载数据之前显示红色错误屏幕,如何解决?

无法从 StreamBuilder (Flutter) 查询子集合