我试图使用下面的方法将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);
});
}
你是在使用流构建器吗,因为如果你不调用setstate的话,initstate会工作一次,但是流构建器可以通过流来改变,或者你每次想改变数据的时候都需要调用setstate。
应该是这样的。
StreamBuilder<double>(
stream: getData(),
builder: (BuildContext context, AsyncSnapshot<int> snapshot) {....})