RangeController class

Coordinates between SfRangeSelector and the widget which listens to it.

Built-in support for selection and zooming with SfChart.

Range controller contains start and end values.

start - represents the currently selected start value of a range selector. The start thumb of the range selector was drawn corresponding to this value.

end - represents the currently selected end value of the range selector. The end thumb of the range selector was drawn corresponding to this value.

start and end can be either double or DateTime.

Selection in SfChart.

class RangeSelectorPage extends StatefulWidget {
  const RangeSelectorPage({ Key key }) : super(key: key);
  @override
  _RangeSelectorPageState createState() => _RangeSelectorPageState();
}

class _RangeSelectorPageState extends State<RangeSelectorPage>
    with SingleTickerProviderStateMixin {
 final double _min = 2.0;
 final double _max = 10.0;
 RangeController _rangeController;

@override
void initState() {
  super.initState();
    _rangeController = RangeController(
    vsync: this,
    start: _values.start,
    end: _values.end);
}

@override
void dispose() {
  _rangeController.dispose();
  super.dispose();
}

final List<Data> chartData = <Data>[
   Data(x:2.0, y: 2.2),
   Data(x:3.0, y: 3.4),
   Data(x:4.0, y: 2.8),
   Data(x:5.0, y: 1.6),
   Data(x:6.0, y: 2.3),
   Data(x:7.0, y: 2.5),
   Data(x:8.0, y: 2.9),
   Data(x:9.0, y: 3.8),
   Data(x:10.0, y: 3.7),
];

@override
Widget build(BuildContext context) {
 return MaterialApp(
     home: Scaffold(
         body: Center(
             child: SfRangeSelector(
                   min: _min,
                   max: _max,
                   interval: 1,
                   showTicks: true,
                   showLabels: true,
                  controller: _rangeController,
                   child: Container(
                   height: 130,
                  child: SfCartesianChart(
                       margin: const EdgeInsets.all(0),
                       primaryXAxis: NumericAxis(minimum: _min,
                           maximum: _max,
                           isVisible: false),
                       primaryYAxis: NumericAxis(isVisible: false),
                       plotAreaBorderWidth: 0,
                       series: <SplineAreaSeries<Data, double>>[
                           SplineAreaSeries<Data, double>(
                               selectionSettings: SelectionSettings(
                                   enable: true,
                                   selectionController: _rangeController),
                              color: Color.fromARGB(255, 126, 184, 253),
                               dataSource: chartData,
                                   xValueMapper: (Data sales, _) => sales.x,
                                   yValueMapper: (Data sales, _) => sales.y)
                            ],
                        ),
                    ),
                ),
            )
        )
    );
  }
}

Zooming in SfChart.

class RangeZoomingPage extends StatefulWidget {
  const RangeZoomingPage({ Key key }) : super(key: key);
  @override
  _RangeZoomingPageState createState() => _RangeZoomingPageState();
}

class _RangeZoomingPageState extends State<RangeZoomingPage>
    with SingleTickerProviderStateMixin {
 final double _min = 2.0;
 final double _max = 10.0;
 RangeController _rangeController;

@override
void initState() {
  super.initState();
    _rangeController = RangeController(
    vsync: this,
    start: _values.start,
    end: _values.end);
}

@override
void dispose() {
  _rangeController.dispose();
  super.dispose();
}

final List<Data> chartData = <Data>[
   Data(x:2.0, y: 2.2),
   Data(x:3.0, y: 3.4),
   Data(x:4.0, y: 2.8),
   Data(x:5.0, y: 1.6),
   Data(x:6.0, y: 2.3),
   Data(x:7.0, y: 2.5),
   Data(x:8.0, y: 2.9),
   Data(x:9.0, y: 3.8),
   Data(x:10.0, y: 3.7),
];

@override
Widget build(BuildContext context) {
 return MaterialApp(
     home: Scaffold(
         body: Center(
             child: SfRangeSelector(
                   min: _min,
                   max: _max,
                   interval: 1,
                   showTicks: true,
                   showLabels: true,
                  controller: _rangeController,
                   child: Container(
                   height: 130,
                  child: SfCartesianChart(
                       margin: const EdgeInsets.all(0),
                       primaryXAxis: NumericAxis(minimum: _min,
                           maximum: _max,
                           isVisible: false,
                           rangeController: _rangeController),
                       primaryYAxis: NumericAxis(isVisible: false),
                       plotAreaBorderWidth: 0,
                       series: <SplineAreaSeries<Data, double>>[
                           SplineAreaSeries<Data, double>(
                              color: Color.fromARGB(255, 126, 184, 253),
                               dataSource: chartData,
                                   xValueMapper: (Data sales, _) => sales.x,
                                   yValueMapper: (Data sales, _) => sales.y)
                            ],
                        ),
                    ),
                ),
            )
        )
    );
  }
}
Inheritance
Mixed-in types

Constructors

RangeController({@required dynamic start, @required dynamic end})
Creates a new instance of RangeController.

Properties

end ↔ dynamic
The current selected end value.
getter/setter pair
hashCode int
The hash code for this object.
no setterinherited
hasListeners bool
Whether any listeners are currently registered.
no setterinherited
previousEnd → dynamic
The previously selected end value.
no setter
previousStart → dynamic
The previously selected start value.
no setter
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
start ↔ dynamic
The current selected start value.
getter/setter pair

Methods

addListener(VoidCallback listener) → void
Register a closure to be called when the object changes.
inherited
debugDescribeChildren() List<DiagnosticsNode>
Returns a list of DiagnosticsNode objects describing this node's children.
inherited
debugFillProperties(DiagnosticPropertiesBuilder properties) → void
Add additional properties associated with the node.
override
dispose() → void
Discards any resources used by the object. After this is called, the object is not in a usable state and should be discarded (calls to addListener will throw after the object is disposed).
inherited
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
notifyListeners() → void
Call all the registered listeners.
inherited
removeListener(VoidCallback listener) → void
Remove a previously registered closure from the list of closures that are notified when the object changes.
inherited
toDiagnosticsNode({String? name, DiagnosticsTreeStyle? style}) DiagnosticsNode
Returns a debug representation of the object that is used by debugging tools and by DiagnosticsNode.toStringDeep.
inherited
toString({DiagnosticLevel minLevel = DiagnosticLevel.info}) String
A string representation of this object.
inherited
toStringDeep({String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug, int wrapWidth = 65}) String
Returns a string representation of this node and its descendants.
inherited
toStringShallow({String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) String
Returns a one-line detailed description of the object.
inherited
toStringShort() String
A brief description of this object, usually just the runtimeType and the hashCode.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited