Resolves #110: Slider improvements

This commit is contained in:
Yegor Vialov 2018-10-07 12:40:45 +03:00
parent 70b6469bd1
commit ce69f044fb
2 changed files with 91 additions and 48 deletions

View File

@ -161,12 +161,7 @@ class _EntityWidgetState extends State<EntityWidget> {
if (widget.widgetType == EntityWidgetType.regular) {
return _buildMainWidget(context);
} else if (widget.widgetType == EntityWidgetType.extended) {
return ListView(
children: <Widget>[
_buildMainWidget(context),
_buildLastUpdatedWidget()
],
);
return _buildExtendedWidget(context);
} else if (widget.widgetType == EntityWidgetType.badge) {
return _buildBadgeWidget(context);
} else {
@ -175,6 +170,15 @@ class _EntityWidgetState extends State<EntityWidget> {
}
}
Widget _buildExtendedWidget(BuildContext context) {
return ListView(
children: <Widget>[
_buildMainWidget(context),
_buildSecondRowWidget()
],
);
}
Widget _buildMainWidget(BuildContext context) {
return SizedBox(
height: Entity.WIDGET_HEIGHT,
@ -205,7 +209,7 @@ class _EntityWidgetState extends State<EntityWidget> {
}
Widget buildAdditionalWidget() {
return _buildLastUpdatedWidget();
return _buildSecondRowWidget();
}
Widget _buildIconWidget() {
@ -218,7 +222,7 @@ class _EntityWidgetState extends State<EntityWidget> {
);
}
Widget _buildLastUpdatedWidget() {
Widget _buildSecondRowWidget() {
return Padding(
padding: EdgeInsets.fromLTRB(
Entity.LEFT_WIDGET_PADDING, Entity.SMALL_FONT_SIZE, 0.0, 0.0),

View File

@ -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: <Widget>[
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: <Widget>[
_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: <Widget>[
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;
}
}
}