流不调用build的setState

我想使用Stream从文件中加载数据并更新进度状态,但是setState无法正常工作。

我希望状态设置为1,然后2,然后3,但最后只将其设置为0到3。 setState不会立即调用build。

我已经尝试过stream.listen和ondata,但是没有运气。不知道我该怎么做,或者我做错了什么。

更新:从我一直在阅读的内容中,我将不得不更深入地研究提供程序或堆栈体系结构。看来解决了这个问题。如果有人有解决方案,请告诉我。

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
import 'package:path/path.dart' as Path;

class MyWidget extends StatefulWidget {
  @override
  _MyWidgetState createState() => _MyWidgetState();
}

class _MyWidgetState extends State<MyWidget> {
  int _progressCount = 0;
  Stream<String> _stream;

  @override
  void initState() {
    _stream = Stream.fromIterable(['a', 'b', 'c', 'd', 'e', 'f']);
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    print('build called');
    return Scaffold(
        appBar: AppBar(),
        body: Center(
            child: Column(
          children: <Widget>[
            Text('Progress $_progressCount'), // I want this to be set to 0,1,2,3
            RaisedButton(
             onPressed: () async {
                print(_progressCount);
                int i = 0;
                //test 1
                await _stream.forEach((line) {
                  i++;
                  if (i % 2 == 0) {
                    print(line);
                    setState(() {
                      // this is not triggering build function
                      _progressCount = _progressCount + 1;
                    });
                  }
                });
              },
              child: Text('Process'),
            )
          ],
        )));
  }
}