flutter - StreamBuilder 未按预期从 Stream 读取数据

标签 flutter dart

我正在尝试使用 StreamBuilder 从流中读取一些数据,但 snapshot.data 仅返回流中的最后一项。在这种情况下,我只得到“f”。我想要得到'a','b','c','d','e','f'。我做错了什么?

class ProgressWidget extends StatefulWidget {
  //ProgressWidget({this.stream}) : super();
  //final Stream<String> stream;

  @override
  _ProgressWidgetState createState() => _ProgressWidgetState();
}

class _ProgressWidgetState extends State<ProgressWidget> {
  int _progressCount = 0;

  @override
  void initState() {
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
        stream: Stream.fromIterable(['a', 'b', 'c', 'd', 'e', 'f']),  // test stream
        builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
          _progressCount++;
          if (snapshot.hasData) {
            print(snapshot.data);
          }
          return snapshot.hasData
              ? new Text('Progress $_progressCount ' + snapshot.data)
              : new Text('Loading ... ');
        });
  }
}

最佳答案

试试这个:

class _ProgressWidgetState extends State<ProgressWidget> {
  int _progressCount = 0;
  Stream<String> _stream;
  List<String> _source = ['a', 'b', 'c', 'd', 'e', 'f'];

  @override
  void initState() {
    super.initState();

    _stream = Stream.periodic(Duration(seconds: 1), (i) => _source[i]).take(_source.length);
  }

  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
      stream: _stream, // test stream
      builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
        _progressCount++;
        return snapshot.hasData ? new Text('Progress $_progressCount ' + snapshot.data) : new Text('Loading ... ');
      },
    );
  }
}

关于flutter - StreamBuilder 未按预期从 Stream 读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61699700/

相关文章:

autocomplete - Flutter TextFormField onChanged 事件

firebase - 在 FireStore 中删除评论的最安全且成本更低的方法

flutter - block 中 buildWhen 的用法

flutter - 为什么 flutter 开关onChanged回调会触发错误?

android - "The method ' openDrawer ' was called on null."我需要一些关于 Flutter 的帮助

flutter - 创建视频列表的最佳方法是什么?

flutter 版本未知

flutter - 如何在 Flutter 中构建 apk 创建旧版本应用程序

flutter - flutter :在 Debug模式下构建时,运行pod安装将永远花费

flutter - Flutter是否能够在运行时动态加载和构建窗口小部件?