mirror of
https://github.com/flutter/samples.git
synced 2025-11-09 22:38:42 +00:00
web/chart: fix sample (#909)
This commit is contained in:
@@ -27,11 +27,12 @@ class TimeSeriesConfidenceInterval extends StatelessWidget {
|
||||
final List<charts.Series> seriesList;
|
||||
final bool animate;
|
||||
|
||||
TimeSeriesConfidenceInterval(this.seriesList, {this.animate});
|
||||
const TimeSeriesConfidenceInterval(this.seriesList, {this.animate, Key key})
|
||||
: super(key: key);
|
||||
|
||||
/// Creates a [TimeSeriesChart] with sample data and no transition.
|
||||
factory TimeSeriesConfidenceInterval.withSampleData() {
|
||||
return new TimeSeriesConfidenceInterval(
|
||||
return TimeSeriesConfidenceInterval(
|
||||
_createSampleData(),
|
||||
// Disable animations for image tests.
|
||||
animate: false,
|
||||
@@ -43,22 +44,22 @@ class TimeSeriesConfidenceInterval extends StatelessWidget {
|
||||
// It is used for creating random series data to demonstrate animation in
|
||||
// the example app only.
|
||||
factory TimeSeriesConfidenceInterval.withRandomData() {
|
||||
return new TimeSeriesConfidenceInterval(_createRandomData());
|
||||
return TimeSeriesConfidenceInterval(_createRandomData());
|
||||
}
|
||||
|
||||
/// Create random data.
|
||||
static List<charts.Series<TimeSeriesSales, DateTime>> _createRandomData() {
|
||||
final random = new Random();
|
||||
final random = Random();
|
||||
|
||||
final data = [
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 19), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 26), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 3), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 10), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 19), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 26), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 10, 3), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 10, 10), random.nextInt(100)),
|
||||
];
|
||||
|
||||
return [
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Sales',
|
||||
colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
|
||||
domainFn: (TimeSeriesSales sales, _) => sales.time,
|
||||
@@ -75,7 +76,7 @@ class TimeSeriesConfidenceInterval extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return new charts.TimeSeriesChart(
|
||||
return charts.TimeSeriesChart(
|
||||
seriesList,
|
||||
animate: animate,
|
||||
// Optionally pass in a [DateTimeFactory] used by the chart. The factory
|
||||
@@ -88,14 +89,14 @@ class TimeSeriesConfidenceInterval extends StatelessWidget {
|
||||
/// Create one series with sample hard coded data.
|
||||
static List<charts.Series<TimeSeriesSales, DateTime>> _createSampleData() {
|
||||
final data = [
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 19), 5),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 26), 25),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 3), 100),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 10), 75),
|
||||
TimeSeriesSales(DateTime(2017, 9, 19), 5),
|
||||
TimeSeriesSales(DateTime(2017, 9, 26), 25),
|
||||
TimeSeriesSales(DateTime(2017, 10, 3), 100),
|
||||
TimeSeriesSales(DateTime(2017, 10, 10), 75),
|
||||
];
|
||||
|
||||
return [
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Sales',
|
||||
colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
|
||||
domainFn: (TimeSeriesSales sales, _) => sales.time,
|
||||
|
||||
@@ -26,11 +26,12 @@ class EndPointsAxisTimeSeriesChart extends StatelessWidget {
|
||||
final List<charts.Series> seriesList;
|
||||
final bool animate;
|
||||
|
||||
EndPointsAxisTimeSeriesChart(this.seriesList, {this.animate});
|
||||
const EndPointsAxisTimeSeriesChart(this.seriesList, {this.animate, Key key})
|
||||
: super(key: key);
|
||||
|
||||
/// Creates a [TimeSeriesChart] with sample data and no transition.
|
||||
factory EndPointsAxisTimeSeriesChart.withSampleData() {
|
||||
return new EndPointsAxisTimeSeriesChart(
|
||||
return EndPointsAxisTimeSeriesChart(
|
||||
_createSampleData(),
|
||||
// Disable animations for image tests.
|
||||
animate: false,
|
||||
@@ -42,22 +43,22 @@ class EndPointsAxisTimeSeriesChart extends StatelessWidget {
|
||||
// It is used for creating random series data to demonstrate animation in
|
||||
// the example app only.
|
||||
factory EndPointsAxisTimeSeriesChart.withRandomData() {
|
||||
return new EndPointsAxisTimeSeriesChart(_createRandomData());
|
||||
return EndPointsAxisTimeSeriesChart(_createRandomData());
|
||||
}
|
||||
|
||||
/// Create random data.
|
||||
static List<charts.Series<TimeSeriesSales, DateTime>> _createRandomData() {
|
||||
final random = new Random();
|
||||
final random = Random();
|
||||
|
||||
final data = [
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 19), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 26), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 3), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 10), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 19), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 26), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 10, 3), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 10, 10), random.nextInt(100)),
|
||||
];
|
||||
|
||||
return [
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Sales',
|
||||
colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
|
||||
domainFn: (TimeSeriesSales sales, _) => sales.time,
|
||||
@@ -70,28 +71,28 @@ class EndPointsAxisTimeSeriesChart extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return new charts.TimeSeriesChart(
|
||||
return charts.TimeSeriesChart(
|
||||
seriesList,
|
||||
animate: animate,
|
||||
// Configures an axis spec that is configured to render one tick at each
|
||||
// end of the axis range, anchored "inside" the axis. The start tick label
|
||||
// will be left-aligned with its tick mark, and the end tick label will be
|
||||
// right-aligned with its tick mark.
|
||||
domainAxis: new charts.EndPointsTimeAxisSpec(),
|
||||
domainAxis: const charts.EndPointsTimeAxisSpec(),
|
||||
);
|
||||
}
|
||||
|
||||
/// Create one series with sample hard coded data.
|
||||
static List<charts.Series<TimeSeriesSales, DateTime>> _createSampleData() {
|
||||
final data = [
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 19), 5),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 26), 25),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 3), 100),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 10), 75),
|
||||
TimeSeriesSales(DateTime(2017, 9, 19), 5),
|
||||
TimeSeriesSales(DateTime(2017, 9, 26), 25),
|
||||
TimeSeriesSales(DateTime(2017, 10, 3), 100),
|
||||
TimeSeriesSales(DateTime(2017, 10, 10), 75),
|
||||
];
|
||||
|
||||
return [
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Sales',
|
||||
colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
|
||||
domainFn: (TimeSeriesSales sales, _) => sales.time,
|
||||
|
||||
@@ -31,11 +31,12 @@ class TimeSeriesLineAnnotationChart extends StatelessWidget {
|
||||
final List<charts.Series> seriesList;
|
||||
final bool animate;
|
||||
|
||||
TimeSeriesLineAnnotationChart(this.seriesList, {this.animate});
|
||||
const TimeSeriesLineAnnotationChart(this.seriesList, {this.animate, Key key})
|
||||
: super(key: key);
|
||||
|
||||
/// Creates a [TimeSeriesChart] with sample data and no transition.
|
||||
factory TimeSeriesLineAnnotationChart.withSampleData() {
|
||||
return new TimeSeriesLineAnnotationChart(
|
||||
return TimeSeriesLineAnnotationChart(
|
||||
_createSampleData(),
|
||||
// Disable animations for image tests.
|
||||
animate: false,
|
||||
@@ -47,22 +48,22 @@ class TimeSeriesLineAnnotationChart extends StatelessWidget {
|
||||
// It is used for creating random series data to demonstrate animation in
|
||||
// the example app only.
|
||||
factory TimeSeriesLineAnnotationChart.withRandomData() {
|
||||
return new TimeSeriesLineAnnotationChart(_createRandomData());
|
||||
return TimeSeriesLineAnnotationChart(_createRandomData());
|
||||
}
|
||||
|
||||
/// Create random data.
|
||||
static List<charts.Series<TimeSeriesSales, DateTime>> _createRandomData() {
|
||||
final random = new Random();
|
||||
final random = Random();
|
||||
|
||||
final data = [
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 19), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 26), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 3), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 10), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 19), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 26), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 10, 3), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 10, 10), random.nextInt(100)),
|
||||
];
|
||||
|
||||
return [
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Sales',
|
||||
domainFn: (TimeSeriesSales sales, _) => sales.time,
|
||||
measureFn: (TimeSeriesSales sales, _) => sales.sales,
|
||||
@@ -74,13 +75,13 @@ class TimeSeriesLineAnnotationChart extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return new charts.TimeSeriesChart(seriesList, animate: animate, behaviors: [
|
||||
new charts.RangeAnnotation([
|
||||
new charts.LineAnnotationSegment(
|
||||
new DateTime(2017, 10, 4), charts.RangeAnnotationAxisType.domain,
|
||||
return charts.TimeSeriesChart(seriesList, animate: animate, behaviors: [
|
||||
charts.RangeAnnotation([
|
||||
charts.LineAnnotationSegment(
|
||||
DateTime(2017, 10, 4), charts.RangeAnnotationAxisType.domain,
|
||||
startLabel: 'Oct 4'),
|
||||
new charts.LineAnnotationSegment(
|
||||
new DateTime(2017, 10, 15), charts.RangeAnnotationAxisType.domain,
|
||||
charts.LineAnnotationSegment(
|
||||
DateTime(2017, 10, 15), charts.RangeAnnotationAxisType.domain,
|
||||
endLabel: 'Oct 15'),
|
||||
]),
|
||||
]);
|
||||
@@ -89,14 +90,14 @@ class TimeSeriesLineAnnotationChart extends StatelessWidget {
|
||||
/// Create one series with sample hard coded data.
|
||||
static List<charts.Series<TimeSeriesSales, DateTime>> _createSampleData() {
|
||||
final data = [
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 19), 5),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 26), 25),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 3), 100),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 10), 75),
|
||||
TimeSeriesSales(DateTime(2017, 9, 19), 5),
|
||||
TimeSeriesSales(DateTime(2017, 9, 26), 25),
|
||||
TimeSeriesSales(DateTime(2017, 10, 3), 100),
|
||||
TimeSeriesSales(DateTime(2017, 10, 10), 75),
|
||||
];
|
||||
|
||||
return [
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Sales',
|
||||
domainFn: (TimeSeriesSales sales, _) => sales.time,
|
||||
measureFn: (TimeSeriesSales sales, _) => sales.sales,
|
||||
|
||||
@@ -31,11 +31,12 @@ class TimeSeriesRangeAnnotationChart extends StatelessWidget {
|
||||
final List<charts.Series> seriesList;
|
||||
final bool animate;
|
||||
|
||||
TimeSeriesRangeAnnotationChart(this.seriesList, {this.animate});
|
||||
const TimeSeriesRangeAnnotationChart(this.seriesList, {this.animate, Key key})
|
||||
: super(key: key);
|
||||
|
||||
/// Creates a [TimeSeriesChart] with sample data and no transition.
|
||||
factory TimeSeriesRangeAnnotationChart.withSampleData() {
|
||||
return new TimeSeriesRangeAnnotationChart(
|
||||
return TimeSeriesRangeAnnotationChart(
|
||||
_createSampleData(),
|
||||
// Disable animations for image tests.
|
||||
animate: false,
|
||||
@@ -47,22 +48,22 @@ class TimeSeriesRangeAnnotationChart extends StatelessWidget {
|
||||
// It is used for creating random series data to demonstrate animation in
|
||||
// the example app only.
|
||||
factory TimeSeriesRangeAnnotationChart.withRandomData() {
|
||||
return new TimeSeriesRangeAnnotationChart(_createRandomData());
|
||||
return TimeSeriesRangeAnnotationChart(_createRandomData());
|
||||
}
|
||||
|
||||
/// Create random data.
|
||||
static List<charts.Series<TimeSeriesSales, DateTime>> _createRandomData() {
|
||||
final random = new Random();
|
||||
final random = Random();
|
||||
|
||||
final data = [
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 19), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 26), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 3), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 10), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 19), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 26), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 10, 3), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 10, 10), random.nextInt(100)),
|
||||
];
|
||||
|
||||
return [
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Sales',
|
||||
domainFn: (TimeSeriesSales sales, _) => sales.time,
|
||||
measureFn: (TimeSeriesSales sales, _) => sales.sales,
|
||||
@@ -74,10 +75,10 @@ class TimeSeriesRangeAnnotationChart extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return new charts.TimeSeriesChart(seriesList, animate: animate, behaviors: [
|
||||
new charts.RangeAnnotation([
|
||||
new charts.RangeAnnotationSegment(new DateTime(2017, 10, 4),
|
||||
new DateTime(2017, 10, 15), charts.RangeAnnotationAxisType.domain),
|
||||
return charts.TimeSeriesChart(seriesList, animate: animate, behaviors: [
|
||||
charts.RangeAnnotation([
|
||||
charts.RangeAnnotationSegment(DateTime(2017, 10, 4),
|
||||
DateTime(2017, 10, 15), charts.RangeAnnotationAxisType.domain),
|
||||
]),
|
||||
]);
|
||||
}
|
||||
@@ -85,14 +86,14 @@ class TimeSeriesRangeAnnotationChart extends StatelessWidget {
|
||||
/// Create one series with sample hard coded data.
|
||||
static List<charts.Series<TimeSeriesSales, DateTime>> _createSampleData() {
|
||||
final data = [
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 19), 5),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 26), 25),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 3), 100),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 10), 75),
|
||||
TimeSeriesSales(DateTime(2017, 9, 19), 5),
|
||||
TimeSeriesSales(DateTime(2017, 9, 26), 25),
|
||||
TimeSeriesSales(DateTime(2017, 10, 3), 100),
|
||||
TimeSeriesSales(DateTime(2017, 10, 10), 75),
|
||||
];
|
||||
|
||||
return [
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Sales',
|
||||
domainFn: (TimeSeriesSales sales, _) => sales.time,
|
||||
measureFn: (TimeSeriesSales sales, _) => sales.sales,
|
||||
|
||||
@@ -25,11 +25,13 @@ class TimeSeriesRangeAnnotationMarginChart extends StatelessWidget {
|
||||
final List<charts.Series> seriesList;
|
||||
final bool animate;
|
||||
|
||||
TimeSeriesRangeAnnotationMarginChart(this.seriesList, {this.animate});
|
||||
const TimeSeriesRangeAnnotationMarginChart(this.seriesList,
|
||||
{this.animate, Key key})
|
||||
: super(key: key);
|
||||
|
||||
/// Creates a [TimeSeriesChart] with sample data and no transition.
|
||||
factory TimeSeriesRangeAnnotationMarginChart.withSampleData() {
|
||||
return new TimeSeriesRangeAnnotationMarginChart(
|
||||
return TimeSeriesRangeAnnotationMarginChart(
|
||||
_createSampleData(),
|
||||
// Disable animations for image tests.
|
||||
animate: false,
|
||||
@@ -41,24 +43,24 @@ class TimeSeriesRangeAnnotationMarginChart extends StatelessWidget {
|
||||
// It is used for creating random series data to demonstrate animation in
|
||||
// the example app only.
|
||||
factory TimeSeriesRangeAnnotationMarginChart.withRandomData() {
|
||||
return new TimeSeriesRangeAnnotationMarginChart(_createRandomData());
|
||||
return TimeSeriesRangeAnnotationMarginChart(_createRandomData());
|
||||
}
|
||||
|
||||
/// Create random data.
|
||||
static List<charts.Series<TimeSeriesSales, DateTime>> _createRandomData() {
|
||||
final random = new Random();
|
||||
final random = Random();
|
||||
|
||||
final data = [
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 19), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 26), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 3), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 19), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 26), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 10, 3), random.nextInt(100)),
|
||||
// Fix one of the points to 100 so that the annotations are consistently
|
||||
// placed.
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 10), 100),
|
||||
TimeSeriesSales(DateTime(2017, 10, 10), 100),
|
||||
];
|
||||
|
||||
return [
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Sales',
|
||||
domainFn: (TimeSeriesSales sales, _) => sales.time,
|
||||
measureFn: (TimeSeriesSales sales, _) => sales.sales,
|
||||
@@ -70,37 +72,35 @@ class TimeSeriesRangeAnnotationMarginChart extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return new charts.TimeSeriesChart(seriesList,
|
||||
return charts.TimeSeriesChart(seriesList,
|
||||
animate: animate,
|
||||
|
||||
// Allow enough space in the left and right chart margins for the
|
||||
// annotations.
|
||||
layoutConfig: new charts.LayoutConfig(
|
||||
leftMarginSpec: new charts.MarginSpec.fixedPixel(60),
|
||||
topMarginSpec: new charts.MarginSpec.fixedPixel(20),
|
||||
rightMarginSpec: new charts.MarginSpec.fixedPixel(60),
|
||||
bottomMarginSpec: new charts.MarginSpec.fixedPixel(20)),
|
||||
layoutConfig: charts.LayoutConfig(
|
||||
leftMarginSpec: charts.MarginSpec.fixedPixel(60),
|
||||
topMarginSpec: charts.MarginSpec.fixedPixel(20),
|
||||
rightMarginSpec: charts.MarginSpec.fixedPixel(60),
|
||||
bottomMarginSpec: charts.MarginSpec.fixedPixel(20)),
|
||||
behaviors: [
|
||||
// Define one domain and two measure annotations configured to render
|
||||
// labels in the chart margins.
|
||||
new charts.RangeAnnotation([
|
||||
new charts.RangeAnnotationSegment(
|
||||
new DateTime(2017, 10, 4),
|
||||
new DateTime(2017, 10, 15),
|
||||
charts.RangeAnnotationAxisType.domain,
|
||||
charts.RangeAnnotation([
|
||||
charts.RangeAnnotationSegment(DateTime(2017, 10, 4),
|
||||
DateTime(2017, 10, 15), charts.RangeAnnotationAxisType.domain,
|
||||
startLabel: 'D1 Start',
|
||||
endLabel: 'D1 End',
|
||||
labelAnchor: charts.AnnotationLabelAnchor.end,
|
||||
color: charts.MaterialPalette.gray.shade200,
|
||||
// Override the default vertical direction for domain labels.
|
||||
labelDirection: charts.AnnotationLabelDirection.horizontal),
|
||||
new charts.RangeAnnotationSegment(
|
||||
charts.RangeAnnotationSegment(
|
||||
15, 20, charts.RangeAnnotationAxisType.measure,
|
||||
startLabel: 'M1 Start',
|
||||
endLabel: 'M1 End',
|
||||
labelAnchor: charts.AnnotationLabelAnchor.end,
|
||||
color: charts.MaterialPalette.gray.shade300),
|
||||
new charts.RangeAnnotationSegment(
|
||||
charts.RangeAnnotationSegment(
|
||||
35, 65, charts.RangeAnnotationAxisType.measure,
|
||||
startLabel: 'M2 Start',
|
||||
endLabel: 'M2 End',
|
||||
@@ -113,14 +113,14 @@ class TimeSeriesRangeAnnotationMarginChart extends StatelessWidget {
|
||||
/// Create one series with sample hard coded data.
|
||||
static List<charts.Series<TimeSeriesSales, DateTime>> _createSampleData() {
|
||||
final data = [
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 19), 5),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 26), 25),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 3), 100),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 10), 75),
|
||||
TimeSeriesSales(DateTime(2017, 9, 19), 5),
|
||||
TimeSeriesSales(DateTime(2017, 9, 26), 25),
|
||||
TimeSeriesSales(DateTime(2017, 10, 3), 100),
|
||||
TimeSeriesSales(DateTime(2017, 10, 10), 75),
|
||||
];
|
||||
|
||||
return [
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Sales',
|
||||
domainFn: (TimeSeriesSales sales, _) => sales.time,
|
||||
measureFn: (TimeSeriesSales sales, _) => sales.sales,
|
||||
|
||||
@@ -24,11 +24,12 @@ class SimpleTimeSeriesChart extends StatelessWidget {
|
||||
final List<charts.Series> seriesList;
|
||||
final bool animate;
|
||||
|
||||
SimpleTimeSeriesChart(this.seriesList, {this.animate});
|
||||
const SimpleTimeSeriesChart(this.seriesList, {this.animate, Key key})
|
||||
: super(key: key);
|
||||
|
||||
/// Creates a [TimeSeriesChart] with sample data and no transition.
|
||||
factory SimpleTimeSeriesChart.withSampleData() {
|
||||
return new SimpleTimeSeriesChart(
|
||||
return SimpleTimeSeriesChart(
|
||||
_createSampleData(),
|
||||
// Disable animations for image tests.
|
||||
animate: false,
|
||||
@@ -40,22 +41,22 @@ class SimpleTimeSeriesChart extends StatelessWidget {
|
||||
// It is used for creating random series data to demonstrate animation in
|
||||
// the example app only.
|
||||
factory SimpleTimeSeriesChart.withRandomData() {
|
||||
return new SimpleTimeSeriesChart(_createRandomData());
|
||||
return SimpleTimeSeriesChart(_createRandomData());
|
||||
}
|
||||
|
||||
/// Create random data.
|
||||
static List<charts.Series<TimeSeriesSales, DateTime>> _createRandomData() {
|
||||
final random = new Random();
|
||||
final random = Random();
|
||||
|
||||
final data = [
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 19), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 26), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 3), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 10), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 19), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 26), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 10, 3), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 10, 10), random.nextInt(100)),
|
||||
];
|
||||
|
||||
return [
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Sales',
|
||||
colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
|
||||
domainFn: (TimeSeriesSales sales, _) => sales.time,
|
||||
@@ -68,7 +69,7 @@ class SimpleTimeSeriesChart extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return new charts.TimeSeriesChart(
|
||||
return charts.TimeSeriesChart(
|
||||
seriesList,
|
||||
animate: animate,
|
||||
// Optionally pass in a [DateTimeFactory] used by the chart. The factory
|
||||
@@ -81,14 +82,14 @@ class SimpleTimeSeriesChart extends StatelessWidget {
|
||||
/// Create one series with sample hard coded data.
|
||||
static List<charts.Series<TimeSeriesSales, DateTime>> _createSampleData() {
|
||||
final data = [
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 19), 5),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 26), 25),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 3), 100),
|
||||
new TimeSeriesSales(new DateTime(2017, 10, 10), 75),
|
||||
TimeSeriesSales(DateTime(2017, 9, 19), 5),
|
||||
TimeSeriesSales(DateTime(2017, 9, 26), 25),
|
||||
TimeSeriesSales(DateTime(2017, 10, 3), 100),
|
||||
TimeSeriesSales(DateTime(2017, 10, 10), 75),
|
||||
];
|
||||
|
||||
return [
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Sales',
|
||||
colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
|
||||
domainFn: (TimeSeriesSales sales, _) => sales.time,
|
||||
|
||||
@@ -35,11 +35,13 @@ class TimeSeriesSymbolAnnotationChart extends StatelessWidget {
|
||||
final List<charts.Series> seriesList;
|
||||
final bool animate;
|
||||
|
||||
TimeSeriesSymbolAnnotationChart(this.seriesList, {this.animate});
|
||||
const TimeSeriesSymbolAnnotationChart(this.seriesList,
|
||||
{this.animate, Key key})
|
||||
: super(key: key);
|
||||
|
||||
/// Creates a [TimeSeriesChart] with sample data and no transition.
|
||||
factory TimeSeriesSymbolAnnotationChart.withSampleData() {
|
||||
return new TimeSeriesSymbolAnnotationChart(
|
||||
return TimeSeriesSymbolAnnotationChart(
|
||||
_createSampleData(),
|
||||
// Disable animations for image tests.
|
||||
animate: false,
|
||||
@@ -51,33 +53,33 @@ class TimeSeriesSymbolAnnotationChart extends StatelessWidget {
|
||||
// It is used for creating random series data to demonstrate animation in
|
||||
// the example app only.
|
||||
factory TimeSeriesSymbolAnnotationChart.withRandomData() {
|
||||
return new TimeSeriesSymbolAnnotationChart(_createRandomData());
|
||||
return TimeSeriesSymbolAnnotationChart(_createRandomData());
|
||||
}
|
||||
|
||||
/// Create random data.
|
||||
static List<charts.Series<TimeSeriesSales, DateTime>> _createRandomData() {
|
||||
final random = new Random();
|
||||
final random = Random();
|
||||
|
||||
final myDesktopData = [
|
||||
new TimeSeriesSales(
|
||||
timeCurrent: new DateTime(2017, 9, 19), sales: random.nextInt(100)),
|
||||
new TimeSeriesSales(
|
||||
timeCurrent: new DateTime(2017, 9, 26), sales: random.nextInt(100)),
|
||||
new TimeSeriesSales(
|
||||
timeCurrent: new DateTime(2017, 10, 3), sales: random.nextInt(100)),
|
||||
new TimeSeriesSales(
|
||||
timeCurrent: new DateTime(2017, 10, 10), sales: random.nextInt(100)),
|
||||
TimeSeriesSales(
|
||||
timeCurrent: DateTime(2017, 9, 19), sales: random.nextInt(100)),
|
||||
TimeSeriesSales(
|
||||
timeCurrent: DateTime(2017, 9, 26), sales: random.nextInt(100)),
|
||||
TimeSeriesSales(
|
||||
timeCurrent: DateTime(2017, 10, 3), sales: random.nextInt(100)),
|
||||
TimeSeriesSales(
|
||||
timeCurrent: DateTime(2017, 10, 10), sales: random.nextInt(100)),
|
||||
];
|
||||
|
||||
final myTabletData = [
|
||||
new TimeSeriesSales(
|
||||
timeCurrent: new DateTime(2017, 9, 19), sales: random.nextInt(100)),
|
||||
new TimeSeriesSales(
|
||||
timeCurrent: new DateTime(2017, 9, 26), sales: random.nextInt(100)),
|
||||
new TimeSeriesSales(
|
||||
timeCurrent: new DateTime(2017, 10, 3), sales: random.nextInt(100)),
|
||||
new TimeSeriesSales(
|
||||
timeCurrent: new DateTime(2017, 10, 10), sales: random.nextInt(100)),
|
||||
TimeSeriesSales(
|
||||
timeCurrent: DateTime(2017, 9, 19), sales: random.nextInt(100)),
|
||||
TimeSeriesSales(
|
||||
timeCurrent: DateTime(2017, 9, 26), sales: random.nextInt(100)),
|
||||
TimeSeriesSales(
|
||||
timeCurrent: DateTime(2017, 10, 3), sales: random.nextInt(100)),
|
||||
TimeSeriesSales(
|
||||
timeCurrent: DateTime(2017, 10, 10), sales: random.nextInt(100)),
|
||||
];
|
||||
|
||||
// Example of a series with two range annotations. A regular point shape
|
||||
@@ -87,15 +89,15 @@ class TimeSeriesSymbolAnnotationChart extends StatelessWidget {
|
||||
// Note that these series do not contain any measure values. They are
|
||||
// positioned automatically in rows.
|
||||
final myAnnotationDataTop = [
|
||||
new TimeSeriesSales(
|
||||
timeCurrent: new DateTime(2017, 9, 24),
|
||||
timePrevious: new DateTime(2017, 9, 19),
|
||||
timeTarget: new DateTime(2017, 9, 24),
|
||||
TimeSeriesSales(
|
||||
timeCurrent: DateTime(2017, 9, 24),
|
||||
timePrevious: DateTime(2017, 9, 19),
|
||||
timeTarget: DateTime(2017, 9, 24),
|
||||
),
|
||||
new TimeSeriesSales(
|
||||
timeCurrent: new DateTime(2017, 9, 29),
|
||||
timePrevious: new DateTime(2017, 9, 29),
|
||||
timeTarget: new DateTime(2017, 10, 4),
|
||||
TimeSeriesSales(
|
||||
timeCurrent: DateTime(2017, 9, 29),
|
||||
timePrevious: DateTime(2017, 9, 29),
|
||||
timeTarget: DateTime(2017, 10, 4),
|
||||
),
|
||||
];
|
||||
|
||||
@@ -103,31 +105,31 @@ class TimeSeriesSymbolAnnotationChart extends StatelessWidget {
|
||||
// annotations. Omitting the previous and target domain values causes that
|
||||
// datum to be drawn as a single point.
|
||||
final myAnnotationDataBottom = [
|
||||
new TimeSeriesSales(
|
||||
timeCurrent: new DateTime(2017, 9, 25),
|
||||
timePrevious: new DateTime(2017, 9, 21),
|
||||
timeTarget: new DateTime(2017, 9, 25),
|
||||
TimeSeriesSales(
|
||||
timeCurrent: DateTime(2017, 9, 25),
|
||||
timePrevious: DateTime(2017, 9, 21),
|
||||
timeTarget: DateTime(2017, 9, 25),
|
||||
),
|
||||
new TimeSeriesSales(timeCurrent: new DateTime(2017, 9, 31)),
|
||||
new TimeSeriesSales(timeCurrent: new DateTime(2017, 10, 5)),
|
||||
TimeSeriesSales(timeCurrent: DateTime(2017, 9, 31)),
|
||||
TimeSeriesSales(timeCurrent: DateTime(2017, 10, 5)),
|
||||
];
|
||||
|
||||
return [
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Desktop',
|
||||
colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
|
||||
domainFn: (TimeSeriesSales sales, _) => sales.timeCurrent,
|
||||
measureFn: (TimeSeriesSales sales, _) => sales.sales,
|
||||
data: myDesktopData,
|
||||
),
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Tablet',
|
||||
colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault,
|
||||
domainFn: (TimeSeriesSales sales, _) => sales.timeCurrent,
|
||||
measureFn: (TimeSeriesSales sales, _) => sales.sales,
|
||||
data: myTabletData,
|
||||
),
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Annotation Series 1',
|
||||
colorFn: (_, __) => charts.MaterialPalette.gray.shadeDefault,
|
||||
domainFn: (TimeSeriesSales sales, _) => sales.timeCurrent,
|
||||
@@ -142,7 +144,7 @@ class TimeSeriesSymbolAnnotationChart extends StatelessWidget {
|
||||
// Optional radius for the annotation shape. If not specified, this will
|
||||
// default to the same radius as the points.
|
||||
..setAttribute(charts.boundsLineRadiusPxKey, 3.5),
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Annotation Series 2',
|
||||
colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault,
|
||||
domainFn: (TimeSeriesSales sales, _) => sales.timeCurrent,
|
||||
@@ -163,12 +165,12 @@ class TimeSeriesSymbolAnnotationChart extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return new charts.TimeSeriesChart(
|
||||
return charts.TimeSeriesChart(
|
||||
seriesList,
|
||||
animate: animate,
|
||||
// Custom renderer configuration for the point series.
|
||||
customSeriesRenderers: [
|
||||
new charts.SymbolAnnotationRendererConfig(
|
||||
charts.SymbolAnnotationRendererConfig(
|
||||
// ID used to link series to this renderer.
|
||||
customRendererId: 'customSymbolAnnotation')
|
||||
],
|
||||
@@ -182,17 +184,17 @@ class TimeSeriesSymbolAnnotationChart extends StatelessWidget {
|
||||
/// Create one series with sample hard coded data.
|
||||
static List<charts.Series<TimeSeriesSales, DateTime>> _createSampleData() {
|
||||
final myDesktopData = [
|
||||
new TimeSeriesSales(timeCurrent: new DateTime(2017, 9, 19), sales: 5),
|
||||
new TimeSeriesSales(timeCurrent: new DateTime(2017, 9, 26), sales: 25),
|
||||
new TimeSeriesSales(timeCurrent: new DateTime(2017, 10, 3), sales: 100),
|
||||
new TimeSeriesSales(timeCurrent: new DateTime(2017, 10, 10), sales: 75),
|
||||
TimeSeriesSales(timeCurrent: DateTime(2017, 9, 19), sales: 5),
|
||||
TimeSeriesSales(timeCurrent: DateTime(2017, 9, 26), sales: 25),
|
||||
TimeSeriesSales(timeCurrent: DateTime(2017, 10, 3), sales: 100),
|
||||
TimeSeriesSales(timeCurrent: DateTime(2017, 10, 10), sales: 75),
|
||||
];
|
||||
|
||||
final myTabletData = [
|
||||
new TimeSeriesSales(timeCurrent: new DateTime(2017, 9, 19), sales: 10),
|
||||
new TimeSeriesSales(timeCurrent: new DateTime(2017, 9, 26), sales: 50),
|
||||
new TimeSeriesSales(timeCurrent: new DateTime(2017, 10, 3), sales: 200),
|
||||
new TimeSeriesSales(timeCurrent: new DateTime(2017, 10, 10), sales: 150),
|
||||
TimeSeriesSales(timeCurrent: DateTime(2017, 9, 19), sales: 10),
|
||||
TimeSeriesSales(timeCurrent: DateTime(2017, 9, 26), sales: 50),
|
||||
TimeSeriesSales(timeCurrent: DateTime(2017, 10, 3), sales: 200),
|
||||
TimeSeriesSales(timeCurrent: DateTime(2017, 10, 10), sales: 150),
|
||||
];
|
||||
|
||||
// Example of a series with two range annotations. A regular point shape
|
||||
@@ -202,15 +204,15 @@ class TimeSeriesSymbolAnnotationChart extends StatelessWidget {
|
||||
// Note that these series do not contain any measure values. They are
|
||||
// positioned automatically in rows.
|
||||
final myAnnotationDataTop = [
|
||||
new TimeSeriesSales(
|
||||
timeCurrent: new DateTime(2017, 9, 24),
|
||||
timePrevious: new DateTime(2017, 9, 19),
|
||||
timeTarget: new DateTime(2017, 9, 24),
|
||||
TimeSeriesSales(
|
||||
timeCurrent: DateTime(2017, 9, 24),
|
||||
timePrevious: DateTime(2017, 9, 19),
|
||||
timeTarget: DateTime(2017, 9, 24),
|
||||
),
|
||||
new TimeSeriesSales(
|
||||
timeCurrent: new DateTime(2017, 9, 29),
|
||||
timePrevious: new DateTime(2017, 9, 29),
|
||||
timeTarget: new DateTime(2017, 10, 4),
|
||||
TimeSeriesSales(
|
||||
timeCurrent: DateTime(2017, 9, 29),
|
||||
timePrevious: DateTime(2017, 9, 29),
|
||||
timeTarget: DateTime(2017, 10, 4),
|
||||
),
|
||||
];
|
||||
|
||||
@@ -218,31 +220,31 @@ class TimeSeriesSymbolAnnotationChart extends StatelessWidget {
|
||||
// annotations. Omitting the previous and target domain values causes that
|
||||
// datum to be drawn as a single point.
|
||||
final myAnnotationDataBottom = [
|
||||
new TimeSeriesSales(
|
||||
timeCurrent: new DateTime(2017, 9, 25),
|
||||
timePrevious: new DateTime(2017, 9, 21),
|
||||
timeTarget: new DateTime(2017, 9, 25),
|
||||
TimeSeriesSales(
|
||||
timeCurrent: DateTime(2017, 9, 25),
|
||||
timePrevious: DateTime(2017, 9, 21),
|
||||
timeTarget: DateTime(2017, 9, 25),
|
||||
),
|
||||
new TimeSeriesSales(timeCurrent: new DateTime(2017, 9, 31)),
|
||||
new TimeSeriesSales(timeCurrent: new DateTime(2017, 10, 5)),
|
||||
TimeSeriesSales(timeCurrent: DateTime(2017, 9, 31)),
|
||||
TimeSeriesSales(timeCurrent: DateTime(2017, 10, 5)),
|
||||
];
|
||||
|
||||
return [
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Desktop',
|
||||
colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
|
||||
domainFn: (TimeSeriesSales sales, _) => sales.timeCurrent,
|
||||
measureFn: (TimeSeriesSales sales, _) => sales.sales,
|
||||
data: myDesktopData,
|
||||
),
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Tablet',
|
||||
colorFn: (_, __) => charts.MaterialPalette.green.shadeDefault,
|
||||
domainFn: (TimeSeriesSales sales, _) => sales.timeCurrent,
|
||||
measureFn: (TimeSeriesSales sales, _) => sales.sales,
|
||||
data: myTabletData,
|
||||
),
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Annotation Series 1',
|
||||
colorFn: (_, __) => charts.MaterialPalette.gray.shadeDefault,
|
||||
// A point shape will be drawn at the location of the domain.
|
||||
@@ -260,7 +262,7 @@ class TimeSeriesSymbolAnnotationChart extends StatelessWidget {
|
||||
// Optional radius for the annotation range. If not specified, this will
|
||||
// default to the same radius as the domain point.
|
||||
..setAttribute(charts.boundsLineRadiusPxKey, 3.5),
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Annotation Series 2',
|
||||
colorFn: (_, __) => charts.MaterialPalette.red.shadeDefault,
|
||||
// A point shape will be drawn at the location of the domain.
|
||||
|
||||
@@ -26,55 +26,54 @@ import 'with_bar_renderer.dart';
|
||||
|
||||
List<GalleryScaffold> buildGallery() {
|
||||
return [
|
||||
new GalleryScaffold(
|
||||
listTileIcon: new Icon(Icons.show_chart),
|
||||
GalleryScaffold(
|
||||
listTileIcon: const Icon(Icons.show_chart),
|
||||
title: 'Time Series Chart',
|
||||
subtitle: 'Simple single time series chart',
|
||||
childBuilder: () => new SimpleTimeSeriesChart.withRandomData(),
|
||||
childBuilder: () => SimpleTimeSeriesChart.withRandomData(),
|
||||
),
|
||||
new GalleryScaffold(
|
||||
listTileIcon: new Icon(Icons.show_chart),
|
||||
GalleryScaffold(
|
||||
listTileIcon: const Icon(Icons.show_chart),
|
||||
title: 'End Points Axis Time Series Chart',
|
||||
subtitle: 'Time series chart with an end points axis',
|
||||
childBuilder: () => new EndPointsAxisTimeSeriesChart.withRandomData(),
|
||||
childBuilder: () => EndPointsAxisTimeSeriesChart.withRandomData(),
|
||||
),
|
||||
new GalleryScaffold(
|
||||
listTileIcon: new Icon(Icons.show_chart),
|
||||
GalleryScaffold(
|
||||
listTileIcon: const Icon(Icons.show_chart),
|
||||
title: 'Line Annotation on Time Series Chart',
|
||||
subtitle: 'Time series chart with future line annotation',
|
||||
childBuilder: () => new TimeSeriesLineAnnotationChart.withRandomData(),
|
||||
childBuilder: () => TimeSeriesLineAnnotationChart.withRandomData(),
|
||||
),
|
||||
new GalleryScaffold(
|
||||
listTileIcon: new Icon(Icons.show_chart),
|
||||
GalleryScaffold(
|
||||
listTileIcon: const Icon(Icons.show_chart),
|
||||
title: 'Range Annotation on Time Series Chart',
|
||||
subtitle: 'Time series chart with future range annotation',
|
||||
childBuilder: () => new TimeSeriesRangeAnnotationChart.withRandomData(),
|
||||
childBuilder: () => TimeSeriesRangeAnnotationChart.withRandomData(),
|
||||
),
|
||||
new GalleryScaffold(
|
||||
listTileIcon: new Icon(Icons.show_chart),
|
||||
GalleryScaffold(
|
||||
listTileIcon: const Icon(Icons.show_chart),
|
||||
title: 'Range Annotation Margin Labels on Time Series Chart',
|
||||
subtitle:
|
||||
'Time series chart with range annotations with labels in margins',
|
||||
childBuilder: () =>
|
||||
new TimeSeriesRangeAnnotationMarginChart.withRandomData(),
|
||||
childBuilder: () => TimeSeriesRangeAnnotationMarginChart.withRandomData(),
|
||||
),
|
||||
new GalleryScaffold(
|
||||
listTileIcon: new Icon(Icons.show_chart),
|
||||
GalleryScaffold(
|
||||
listTileIcon: const Icon(Icons.show_chart),
|
||||
title: 'Symbol Annotation Time Series Chart',
|
||||
subtitle: 'Time series chart with annotation data below the draw area',
|
||||
childBuilder: () => new TimeSeriesSymbolAnnotationChart.withRandomData(),
|
||||
childBuilder: () => TimeSeriesSymbolAnnotationChart.withRandomData(),
|
||||
),
|
||||
new GalleryScaffold(
|
||||
listTileIcon: new Icon(Icons.show_chart),
|
||||
GalleryScaffold(
|
||||
listTileIcon: const Icon(Icons.show_chart),
|
||||
title: 'Time Series Chart with Bars',
|
||||
subtitle: 'Time series chart using the bar renderer',
|
||||
childBuilder: () => new TimeSeriesBar.withRandomData(),
|
||||
childBuilder: () => TimeSeriesBar.withRandomData(),
|
||||
),
|
||||
new GalleryScaffold(
|
||||
listTileIcon: new Icon(Icons.show_chart),
|
||||
GalleryScaffold(
|
||||
listTileIcon: const Icon(Icons.show_chart),
|
||||
title: 'Time Series Chart with Confidence Interval',
|
||||
subtitle: 'Draws area around the confidence interval',
|
||||
childBuilder: () => new TimeSeriesConfidenceInterval.withRandomData(),
|
||||
childBuilder: () => TimeSeriesConfidenceInterval.withRandomData(),
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
@@ -24,11 +24,12 @@ class TimeSeriesBar extends StatelessWidget {
|
||||
final List<charts.Series<TimeSeriesSales, DateTime>> seriesList;
|
||||
final bool animate;
|
||||
|
||||
TimeSeriesBar(this.seriesList, {this.animate});
|
||||
const TimeSeriesBar(this.seriesList, {this.animate, Key key})
|
||||
: super(key: key);
|
||||
|
||||
/// Creates a [TimeSeriesChart] with sample data and no transition.
|
||||
factory TimeSeriesBar.withSampleData() {
|
||||
return new TimeSeriesBar(
|
||||
return TimeSeriesBar(
|
||||
_createSampleData(),
|
||||
// Disable animations for image tests.
|
||||
animate: false,
|
||||
@@ -40,39 +41,39 @@ class TimeSeriesBar extends StatelessWidget {
|
||||
// It is used for creating random series data to demonstrate animation in
|
||||
// the example app only.
|
||||
factory TimeSeriesBar.withRandomData() {
|
||||
return new TimeSeriesBar(_createRandomData());
|
||||
return TimeSeriesBar(_createRandomData());
|
||||
}
|
||||
|
||||
/// Create random data.
|
||||
static List<charts.Series<TimeSeriesSales, DateTime>> _createRandomData() {
|
||||
final random = new Random();
|
||||
final random = Random();
|
||||
|
||||
final data = [
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 1), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 2), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 3), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 4), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 5), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 6), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 7), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 8), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 9), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 10), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 11), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 12), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 13), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 14), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 15), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 16), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 17), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 18), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 19), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 20), random.nextInt(100)),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 21), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 1), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 2), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 3), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 4), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 5), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 6), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 7), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 8), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 9), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 10), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 11), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 12), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 13), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 14), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 15), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 16), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 17), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 18), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 19), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 20), random.nextInt(100)),
|
||||
TimeSeriesSales(DateTime(2017, 9, 21), random.nextInt(100)),
|
||||
];
|
||||
|
||||
return [
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Sales',
|
||||
colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
|
||||
domainFn: (TimeSeriesSales sales, _) => sales.time,
|
||||
@@ -85,50 +86,50 @@ class TimeSeriesBar extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return new charts.TimeSeriesChart(
|
||||
return charts.TimeSeriesChart(
|
||||
seriesList,
|
||||
animate: animate,
|
||||
// Set the default renderer to a bar renderer.
|
||||
// This can also be one of the custom renderers of the time series chart.
|
||||
defaultRenderer: new charts.BarRendererConfig<DateTime>(),
|
||||
defaultRenderer: charts.BarRendererConfig<DateTime>(),
|
||||
// It is recommended that default interactions be turned off if using bar
|
||||
// renderer, because the line point highlighter is the default for time
|
||||
// series chart.
|
||||
defaultInteractions: false,
|
||||
// If default interactions were removed, optionally add select nearest
|
||||
// and the domain highlighter that are typical for bar charts.
|
||||
behaviors: [new charts.SelectNearest(), new charts.DomainHighlighter()],
|
||||
behaviors: [charts.SelectNearest(), charts.DomainHighlighter()],
|
||||
);
|
||||
}
|
||||
|
||||
/// Create one series with sample hard coded data.
|
||||
static List<charts.Series<TimeSeriesSales, DateTime>> _createSampleData() {
|
||||
final data = [
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 1), 5),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 2), 5),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 3), 25),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 4), 100),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 5), 75),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 6), 88),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 7), 65),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 8), 91),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 9), 100),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 10), 111),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 11), 90),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 12), 50),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 13), 40),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 14), 30),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 15), 40),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 16), 50),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 17), 30),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 18), 35),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 19), 40),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 20), 32),
|
||||
new TimeSeriesSales(new DateTime(2017, 9, 21), 31),
|
||||
TimeSeriesSales(DateTime(2017, 9, 1), 5),
|
||||
TimeSeriesSales(DateTime(2017, 9, 2), 5),
|
||||
TimeSeriesSales(DateTime(2017, 9, 3), 25),
|
||||
TimeSeriesSales(DateTime(2017, 9, 4), 100),
|
||||
TimeSeriesSales(DateTime(2017, 9, 5), 75),
|
||||
TimeSeriesSales(DateTime(2017, 9, 6), 88),
|
||||
TimeSeriesSales(DateTime(2017, 9, 7), 65),
|
||||
TimeSeriesSales(DateTime(2017, 9, 8), 91),
|
||||
TimeSeriesSales(DateTime(2017, 9, 9), 100),
|
||||
TimeSeriesSales(DateTime(2017, 9, 10), 111),
|
||||
TimeSeriesSales(DateTime(2017, 9, 11), 90),
|
||||
TimeSeriesSales(DateTime(2017, 9, 12), 50),
|
||||
TimeSeriesSales(DateTime(2017, 9, 13), 40),
|
||||
TimeSeriesSales(DateTime(2017, 9, 14), 30),
|
||||
TimeSeriesSales(DateTime(2017, 9, 15), 40),
|
||||
TimeSeriesSales(DateTime(2017, 9, 16), 50),
|
||||
TimeSeriesSales(DateTime(2017, 9, 17), 30),
|
||||
TimeSeriesSales(DateTime(2017, 9, 18), 35),
|
||||
TimeSeriesSales(DateTime(2017, 9, 19), 40),
|
||||
TimeSeriesSales(DateTime(2017, 9, 20), 32),
|
||||
TimeSeriesSales(DateTime(2017, 9, 21), 31),
|
||||
];
|
||||
|
||||
return [
|
||||
new charts.Series<TimeSeriesSales, DateTime>(
|
||||
charts.Series<TimeSeriesSales, DateTime>(
|
||||
id: 'Sales',
|
||||
colorFn: (_, __) => charts.MaterialPalette.blue.shadeDefault,
|
||||
domainFn: (TimeSeriesSales sales, _) => sales.time,
|
||||
|
||||
Reference in New Issue
Block a user