作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在chart_flutter TimeSeriesChart中更新数据系列时,指示点消失。 This link提出了一种可能的解决方法,但是到目前为止,由于没有完整的示例说明,因此我无法实现它。有没有人能举例说明这一点?具体来说,我正在尝试在图形线上保持指标点,同时还更新Text
小部件。
TimeSeriesChart的代码:
new charts.TimeSeriesChart(
getSeries(reading),
dateTimeFactory: new charts.UTCDateTimeFactory(),
animate: false,
selectionModels: [
new charts.SelectionModelConfig(
changedListener: _onSelectionChanged,
)
],
behaviors: [
new charts.LinePointHighlighter(
defaultRadiusPx: 20.0,
radiusPaddingPx: 20.0,
showHorizontalFollowLine:
charts.LinePointHighlighterFollowLineType.nearest,
showVerticalFollowLine:
charts.LinePointHighlighterFollowLineType.nearest
),
new charts.SelectNearest(
eventTrigger: charts.SelectionTrigger.tapAndDrag
)
],
primaryMeasureAxis: ...
domainAxis: ...
_onSelectionChanged
的代码:
_onSelectionChanged(charts.SelectionModel model) {
final selectedDatum = model.selectedDatum;
DateTime time;
final measures = <String, num>{};
num value;
if (selectedDatum.isNotEmpty) {
time = selectedDatum.first.datum.time;
value = selectedDatum.first.datum.value;
selectedDatum.forEach((charts.SeriesDatum datumPair) {
measures[datumPair.series.displayName] = datumPair.datum.value;
if (!datumPair.series.id.contains("min") && !datumPair.series.id.contains("max"))
value = datumPair.datum.value;
});
}
setState(() {
_time = time;
_measures = measures;
_value = value; // This is the value that is used within the `Text` widget
});
}
最佳答案
我是如何工作的:
class InnerStatefulWidget extends StatefulWidget {
final List<charts.Series<T, DateTime>> seriesList; //where T is the class used to create the series
InnerStatefulWidget(this.seriesList);
factory InnerStatefulWidget.withSampleData(D apiData) { // where D is the class for the data from API
return new InnerStatefulWidget(
_createSeriesData(apiData) // the function that receives data from the API and converts it into series
);
}
static List<charts.Series<T, DateTime>> _createSeriesData(D apiData) {
return new charts.Series<T, DateTime>(
id: CHART_ID,
domainFn: (T x, _) => x.dateTime,
measureFn: (T x, _) => x.value,
data: apiData));
}
@override
_InnerStatefulWidgetState createState() => _InnerStatefulWidgetState();
}
class _InnerStatefulWidgetState extends State<InnerStatefulWidget> {
@override
Widget build(BuildContext context) {
return new charts.TimeSeriesChart(
widget.seriesList,
...
selectionModels: [
new charts.SelectionModelConfig(
type: charts.SelectionModelType.info,
changedListener: _onSelectionChanged,
)
],
);
}
void _onSelectionChanged(charts.SelectionModel model) {
...
}
}
class OuterStatefulWidget extends StatefulWidget {
D apiData;
OuterStatefulWidget(this.apiData);
@override
_OuterStatefulWidgetState createState() => _OuterStatefulWidgetState();
}
class _OuterStatefulWidgetState extends State<OuterStatefulWidget> {
@override
Widget build(BuildContext context) {
return InnerStatefulWidget.withSampleData(widget.apiData);
}
}
关于flutter - 如何防止指标点在Chart_flutter中的setState()上消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58395858/
我是一名优秀的程序员,十分优秀!