From ce69f044fb97dc2f17eb5c7beae63dd6d68eabfe Mon Sep 17 00:00:00 2001 From: Yegor Vialov Date: Sun, 7 Oct 2018 12:40:45 +0300 Subject: [PATCH] Resolves #110: Slider improvements --- lib/entity_class/entity.class.dart | 20 ++-- lib/entity_class/slider_entity.class.dart | 119 ++++++++++++++-------- 2 files changed, 91 insertions(+), 48 deletions(-) diff --git a/lib/entity_class/entity.class.dart b/lib/entity_class/entity.class.dart index 936f08f..6844964 100644 --- a/lib/entity_class/entity.class.dart +++ b/lib/entity_class/entity.class.dart @@ -161,12 +161,7 @@ class _EntityWidgetState extends State { if (widget.widgetType == EntityWidgetType.regular) { return _buildMainWidget(context); } else if (widget.widgetType == EntityWidgetType.extended) { - return ListView( - children: [ - _buildMainWidget(context), - _buildLastUpdatedWidget() - ], - ); + return _buildExtendedWidget(context); } else if (widget.widgetType == EntityWidgetType.badge) { return _buildBadgeWidget(context); } else { @@ -175,6 +170,15 @@ class _EntityWidgetState extends State { } } + Widget _buildExtendedWidget(BuildContext context) { + return ListView( + children: [ + _buildMainWidget(context), + _buildSecondRowWidget() + ], + ); + } + Widget _buildMainWidget(BuildContext context) { return SizedBox( height: Entity.WIDGET_HEIGHT, @@ -205,7 +209,7 @@ class _EntityWidgetState extends State { } Widget buildAdditionalWidget() { - return _buildLastUpdatedWidget(); + return _buildSecondRowWidget(); } Widget _buildIconWidget() { @@ -218,7 +222,7 @@ class _EntityWidgetState extends State { ); } - Widget _buildLastUpdatedWidget() { + Widget _buildSecondRowWidget() { return Padding( padding: EdgeInsets.fromLTRB( Entity.LEFT_WIDGET_PADDING, Entity.SMALL_FONT_SIZE, 0.0, 0.0), diff --git a/lib/entity_class/slider_entity.class.dart b/lib/entity_class/slider_entity.class.dart index 187e761..3969acf 100644 --- a/lib/entity_class/slider_entity.class.dart +++ b/lib/entity_class/slider_entity.class.dart @@ -11,6 +11,11 @@ class _SliderEntityWidgetState extends _EntityWidgetState { @override void initState() { super.initState(); + if (valueStep < 1) { + _multiplier = 10; + } else if (valueStep < 0.1) { + _multiplier = 100; + } } @override @@ -20,46 +25,80 @@ class _SliderEntityWidgetState extends _EntityWidgetState { } @override - Widget _buildActionWidget(BuildContext context) { - if (valueStep < 1) { - _multiplier = 10; - } else if (valueStep < 0.1) { - _multiplier = 100; - } - return Expanded( - //width: 200.0, - child: Row( - children: [ - Expanded( - child: Slider( - min: this.minValue * _multiplier, - max: this.maxValue * _multiplier, - value: (doubleState <= this.maxValue) && - (doubleState >= this.minValue) - ? doubleState * _multiplier - : this.minValue * _multiplier, - onChanged: (value) { - setState(() { - widget.entity.state = (value.roundToDouble() / _multiplier).toString(); - }); - /*eventBus.fire(new StateChangedEvent(widget.entity.entityId, - (value.roundToDouble() / _multiplier).toString(), true));*/ - }, - onChangeEnd: (value) { - setNewState(value.roundToDouble() / _multiplier); - }, - ), - ), - Padding( - padding: EdgeInsets.only(right: Entity.RIGHT_WIDGET_PADDING), - child: Text("${widget.entity.state}${widget.entity.unitOfMeasurement}", - textAlign: TextAlign.right, - style: new TextStyle( - fontSize: Entity.STATE_FONT_SIZE, - )), - ) - ], - ), + Widget _buildExtendedWidget(BuildContext context) { + return ListView( + children: [ + _buildMainWidget(context), + _buildExtendedSlider(), + _buildSecondRowWidget() + ], ); } + + Widget _buildExtendedSlider() { + return Slider( + min: this.minValue * _multiplier, + max: this.maxValue * _multiplier, + value: (doubleState <= this.maxValue) && + (doubleState >= this.minValue) + ? doubleState * _multiplier + : this.minValue * _multiplier, + onChanged: (value) { + setState(() { + widget.entity.state = + (value.roundToDouble() / _multiplier).toString(); + }); + /*eventBus.fire(new StateChangedEvent(widget.entity.entityId, + (value.roundToDouble() / _multiplier).toString(), true));*/ + }, + onChangeEnd: (value) { + setNewState(value.roundToDouble() / _multiplier); + }, + ); + } + + @override + Widget _buildActionWidget(BuildContext context) { + Widget stateWidget = Padding( + padding: EdgeInsets.only(right: Entity.RIGHT_WIDGET_PADDING), + child: Text("${widget.entity.state}${widget.entity.unitOfMeasurement}", + textAlign: TextAlign.right, + style: new TextStyle( + fontSize: Entity.STATE_FONT_SIZE, + )), + ); + if (widget.widgetType == EntityWidgetType.regular) { + return Expanded( + //width: 200.0, + child: Row( + children: [ + Expanded( + child: Slider( + min: this.minValue * _multiplier, + max: this.maxValue * _multiplier, + value: (doubleState <= this.maxValue) && + (doubleState >= this.minValue) + ? doubleState * _multiplier + : this.minValue * _multiplier, + onChanged: (value) { + setState(() { + widget.entity.state = + (value.roundToDouble() / _multiplier).toString(); + }); + /*eventBus.fire(new StateChangedEvent(widget.entity.entityId, + (value.roundToDouble() / _multiplier).toString(), true));*/ + }, + onChangeEnd: (value) { + setNewState(value.roundToDouble() / _multiplier); + }, + ), + ), + stateWidget + ], + ), + ); + } else { + return stateWidget; + } + } } \ No newline at end of file