最后,我对代码进行了如下更新,以利用流(流本身是在其他地方创建的,将被传递到Sparkline小部件):
class Sparkline extends StatefulWidget {
late final StreamController<double> streamController;
Sparkline({required this.streamController});
@override
_Sparkline create() => _Sparkline;
}
class _Sparkline extends State<Sparkline> {
/// List of points to be drawn
List<Offset> _points = [];
/// Subscription to the value stream
late StreamSubscription<double> _subscription;
@override
void initState() {
super.initState();
// Subscribe to the stream of points
_subscription = widget.streamController.stream.listen((value) {
setState(() {
points.add(point);
});
});
}
@override
void dispose() {
_subscription.cancel();
super.dispose();
}
@override
void build(BuildState context) {
/// My sparkling custom painter that draw all points
return CustomPainter(...);
}
}
``