Resolves #142 Alarm control panel support

This commit is contained in:
estevez-dev
2019-01-29 11:54:26 +02:00
parent dc3ca38c78
commit 24c7675fa4

View File

@ -9,34 +9,71 @@ class AlarmControlPanelControlsWidget extends StatefulWidget {
class _AlarmControlPanelControlsWidgetWidgetState extends State<AlarmControlPanelControlsWidget> {
void _disarm(AlarmControlPanelEntity entity, String code) {
String code = "";
void _callService(AlarmControlPanelEntity entity, String service) {
eventBus.fire(new ServiceCallEvent(
entity.domain, "alarm_disarm", entity.entityId,
entity.domain, service, entity.entityId,
{"code": "$code"}));
setState(() {
code = "";
});
}
@override
Widget build(BuildContext context) {
final entityModel = EntityModel.of(context);
final AlarmControlPanelEntity entity = entityModel.entityWrapper.entity;
List<Widget> buttons = [];
if (entity.state == EntityState.alarm_disarmed) {
buttons.addAll(<Widget>[
RaisedButton(
onPressed: () => _callService(entity, "alarm_arm_home"),
child: Text("ARM HOME"),
),
RaisedButton(
onPressed: () => _callService(entity, "alarm_arm_away"),
child: Text("ARM AWAY"),
)
]
);
} else {
buttons.add(
RaisedButton(
onPressed: () => _callService(entity, "alarm_disarm"),
child: Text("DISARM"),
)
);
}
return Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
TextField(
Container(
width: 150.0,
child: TextField(
//focusNode: _focusNode,
obscureText: true,
/*controller: new TextEditingController.fromValue(
new TextEditingValue(
text: _tmpValue,
selection:
new TextSelection.collapsed(offset: _tmpValue.length)
)
),*/
onChanged: (value) {
Logger.d('Alarm code: $value');
})
],
obscureText: true,
controller: new TextEditingController.fromValue(
new TextEditingValue(
text: code,
selection:
new TextSelection.collapsed(offset: code.length)
)
),
onChanged: (value) {
code = value;
}
)
),
Wrap(
alignment: WrapAlignment.center,
spacing: 10.0,
runSpacing: 1.0,
children: buttons
)
]
);
}