Add entity widget type. Preparing to make entity build it's own badge

This commit is contained in:
estevez
2018-10-03 16:44:11 +03:00
parent e7ca1209e2
commit 4725953b32
9 changed files with 27 additions and 19 deletions

View File

@ -44,7 +44,7 @@ class _EntityViewPageState extends State<EntityViewPage> {
), ),
body: Padding( body: Padding(
padding: EdgeInsets.all(10.0), padding: EdgeInsets.all(10.0),
child: _entity.buildWidget(context, false) child: _entity.buildWidget(context, EntityWidgetType.extended)
), ),
); );
} }

View File

@ -8,7 +8,7 @@ class _ButtonEntityWidgetState extends _EntityWidgetState {
} }
@override @override
Widget _buildActionWidget(bool inCard, BuildContext context) { Widget _buildActionWidget(BuildContext context) {
return FlatButton( return FlatButton(
onPressed: (() { onPressed: (() {
setNewState(null); setNewState(null);

View File

@ -34,7 +34,7 @@ class _DateTimeEntityWidgetState extends _EntityWidgetState {
} }
@override @override
Widget _buildActionWidget(bool inCard, BuildContext context) { Widget _buildActionWidget(BuildContext context) {
return Padding( return Padding(
padding: padding:
EdgeInsets.fromLTRB(0.0, 0.0, Entity.RIGHT_WIDGET_PADDING, 0.0), EdgeInsets.fromLTRB(0.0, 0.0, Entity.RIGHT_WIDGET_PADDING, 0.0),

View File

@ -57,10 +57,10 @@ class Entity {
_lastUpdated = DateTime.tryParse(rawData["last_updated"]); _lastUpdated = DateTime.tryParse(rawData["last_updated"]);
} }
EntityWidget buildWidget(BuildContext context, bool inCard) { EntityWidget buildWidget(BuildContext context, int widgetType) {
return EntityWidget( return EntityWidget(
entity: this, entity: this,
inCard: inCard, widgetType: widgetType,
); );
} }
@ -93,14 +93,20 @@ class Entity {
} }
} }
}
class EntityWidgetType {
static final int regular = 1;
static final int extended = 2;
static final int badge = 3;
} }
class EntityWidget extends StatefulWidget { class EntityWidget extends StatefulWidget {
EntityWidget({Key key, this.entity, this.inCard}) : super(key: key);
EntityWidget({Key key, this.entity, this.widgetType}) : super(key: key);
final Entity entity; final Entity entity;
final bool inCard; final int widgetType;
@override @override
_EntityWidgetState createState() { _EntityWidgetState createState() {
@ -144,15 +150,17 @@ class _EntityWidgetState extends State<EntityWidget> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (widget.inCard) { if (widget.widgetType == EntityWidgetType.regular) {
return _buildMainWidget(context); return _buildMainWidget(context);
} else { } else if (widget.widgetType == EntityWidgetType.extended) {
return ListView( return ListView(
children: <Widget>[ children: <Widget>[
_buildMainWidget(context), _buildMainWidget(context),
_buildLastUpdatedWidget() _buildLastUpdatedWidget()
], ],
); );
} else {
TheLogger.log("Error", "Unknown entity widget type: ${widget.widgetType}");
} }
} }
@ -163,15 +171,15 @@ class _EntityWidgetState extends State<EntityWidget> {
children: <Widget>[ children: <Widget>[
GestureDetector( GestureDetector(
child: _buildIconWidget(), child: _buildIconWidget(),
onTap: widget.inCard ? openEntityPage : null, onTap: widget.widgetType == EntityWidgetType.extended ? null : openEntityPage,
), ),
Expanded( Expanded(
child: GestureDetector( child: GestureDetector(
child: _buildNameWidget(), child: _buildNameWidget(),
onTap: widget.inCard ? openEntityPage : null, onTap: widget.widgetType == EntityWidgetType.extended ? null : openEntityPage,
), ),
), ),
_buildActionWidget(widget.inCard, context) _buildActionWidget(context)
], ],
), ),
); );
@ -224,7 +232,7 @@ class _EntityWidgetState extends State<EntityWidget> {
); );
} }
Widget _buildActionWidget(bool inCard, BuildContext context) { Widget _buildActionWidget(BuildContext context) {
return Padding( return Padding(
padding: padding:
EdgeInsets.fromLTRB(0.0, 0.0, Entity.RIGHT_WIDGET_PADDING, 0.0), EdgeInsets.fromLTRB(0.0, 0.0, Entity.RIGHT_WIDGET_PADDING, 0.0),

View File

@ -10,7 +10,7 @@ class _SelectEntityWidgetState extends _EntityWidgetState {
} }
@override @override
Widget _buildActionWidget(bool inCard, BuildContext context) { Widget _buildActionWidget(BuildContext context) {
_listOptions.clear(); _listOptions.clear();
if (widget.entity._attributes["options"] != null) { if (widget.entity._attributes["options"] != null) {
widget.entity._attributes["options"].forEach((value){ widget.entity._attributes["options"].forEach((value){

View File

@ -20,7 +20,7 @@ class _SliderEntityWidgetState extends _EntityWidgetState {
} }
@override @override
Widget _buildActionWidget(bool inCard, BuildContext context) { Widget _buildActionWidget(BuildContext context) {
if (valueStep < 1) { if (valueStep < 1) {
_multiplier = 10; _multiplier = 10;
} else if (valueStep < 0.1) { } else if (valueStep < 0.1) {

View File

@ -22,7 +22,7 @@ class _SwitchEntityWidgetState extends _EntityWidgetState {
} }
@override @override
Widget _buildActionWidget(bool inCard, BuildContext context) { Widget _buildActionWidget(BuildContext context) {
return Switch( return Switch(
value: widget.entity.assumedState == 'on', value: widget.entity.assumedState == 'on',
onChanged: ((switchState) { onChanged: ((switchState) {

View File

@ -48,7 +48,7 @@ class _TextEntityWidgetState extends _EntityWidgetState {
} }
@override @override
Widget _buildActionWidget(bool inCard, BuildContext context) { Widget _buildActionWidget(BuildContext context) {
if (!_focusNode.hasFocus && (_tmpValue != widget.entity.state)) { if (!_focusNode.hasFocus && (_tmpValue != widget.entity.state)) {
_tmpValue = widget.entity.state; _tmpValue = widget.entity.state;
} }
@ -69,7 +69,7 @@ class _TextEntityWidgetState extends _EntityWidgetState {
); );
} else { } else {
TheLogger.log("Warning", "Unsupported input mode for ${widget.entity.entityId}"); TheLogger.log("Warning", "Unsupported input mode for ${widget.entity.entityId}");
return super._buildActionWidget(inCard, context); return super._buildActionWidget(context);
} }
} }

View File

@ -437,7 +437,7 @@ class _MainPageState extends State<MainPage> with WidgetsBindingObserver {
entities.add( entities.add(
Padding( Padding(
padding: EdgeInsets.fromLTRB(0.0, 10.0, 0.0, 10.0), padding: EdgeInsets.fromLTRB(0.0, 10.0, 0.0, 10.0),
child: entity.buildWidget(context, true), child: entity.buildWidget(context, EntityWidgetType.regular),
)); ));
} }
}); });