我如何从一个文件加载数据到一个流?

问题描述 投票:0回答:1

我试图使用下面的方法将JSON文件中的数据流导入我的应用程序中 StreamController 在我的情况下,我想不断地更新余额,我认为它在重新加载文件时失败了,它可能只是第一次加载,可能是为什么它不更新数字,也因为当我按热重新加载时,它得到了正确的值。我认为它在重新加载文件时失败了,它可能只加载了第一次,这可能是为什么它没有更新数字,也因为当我按热重新加载时,它得到了正确的值。

  Stream<double> initBalance() async* {
    final response = await rootBundle
        .loadString('lib/assets/data.json')
        .then((jsonStr) => jsonDecode(jsonStr));

    yield double.parse(response['balance']);
  }

  MainController mainController;

  StreamController<double> streamController;

  @override
  void initState() {
    super.initState();
    this.mainController = new MainController();
    this.streamController = new StreamController();
    getData();
  }

  getData() {
    Timer.periodic(Duration(seconds: 1), (timer) async {
      var test = this.mainController.initBalance();
      this.streamController.sink.addStream(test);
    });
  }
flutter stream
1个回答
0
投票

你是在使用流构建器吗,因为如果你不调用setstate的话,initstate会工作一次,但是流构建器可以通过流来改变,或者你每次想改变数据的时候都需要调用setstate。

应该是这样的。

StreamBuilder<double>(
          stream: getData(),
          builder: (BuildContext context, AsyncSnapshot<int> snapshot) {....})
© www.soinside.com 2019 - 2024. All rights reserved.