我一直在研究流的使用,因为我认为这将是我的应用程序的最佳解决方案。我希望能够按特定的时间间隔检查时间,然后根据太阳是否升起或落下来自动更改地图的主题。我有主题,也有sun代码,但是我需要将它们结合在一起。
到目前为止,这是我的代码。如果我对控制器和订阅使用double并只是生成一个随机数,那么一切都很好。我每秒都会得到一个不同的随机生成的数字。
但是,使用下面的代码只是简单地显示了同一时间。
有人可以以此指向我正确的方向吗?
import 'dart:async';
import 'dart:core';
import 'package:flutter/material.dart';
void main() => runApp(StreamTest());
class StreamTest extends StatefulWidget {
@override
_StreamTestState createState() => _StreamTestState();
}
class _StreamTestState extends State<StreamTest> {
StreamController<DateTime> controller =
StreamController<DateTime>.broadcast();
StreamSubscription<DateTime> streamSubscription;
DateTime currentTime = DateTime.now();
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "Stream Demo",home: Scaffold(
body: Center(
child: Row(
mainAxisSize: MainAxisSize.min,children: <Widget>[
MaterialButton(
color: Colors.yellow,child: Text("Subscribe"),onpressed: () async {
getTime().listen((value) {
print('CURRENT TIME $currentTime');
});
},),MaterialButton(
child: Text('Unsubscribe'),color: Colors.red[200],onpressed: () {
streamSubscription.cancel();
},],);
}
}
Stream<DateTime> getTime() async* {
DateTime currentTime = DateTime.now();
while (true) {
await Future.delayed(Duration(seconds: 1));
yield currentTime;
}
}
谢谢