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

View File

@ -11,6 +11,11 @@ class _SliderEntityWidgetState extends _EntityWidgetState {
@override @override
void initState() { void initState() {
super.initState(); super.initState();
if (valueStep < 1) {
_multiplier = 10;
} else if (valueStep < 0.1) {
_multiplier = 100;
}
} }
@override @override
@ -20,46 +25,80 @@ class _SliderEntityWidgetState extends _EntityWidgetState {
} }
@override @override
Widget _buildActionWidget(BuildContext context) { Widget _buildExtendedWidget(BuildContext context) {
if (valueStep < 1) { return ListView(
_multiplier = 10; children: <Widget>[
} else if (valueStep < 0.1) { _buildMainWidget(context),
_multiplier = 100; _buildExtendedSlider(),
} _buildSecondRowWidget()
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 _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;
}
}
} }