Skip to content

Commit

Permalink
feat(lib/assets/traits/device_item_icon.dart,lib/assets/traits/unknow…
Browse files Browse the repository at this point in the history
…n_item_icon.dart,lib/components/unknown_widget.dart,test/assets/device_item_icon_test.dart): Add display of Bootstrap Icons box for unknown trait devices
  • Loading branch information
rlperez committed Dec 1, 2021
1 parent a7cc621 commit 24b5cad
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 9 deletions.
12 changes: 4 additions & 8 deletions lib/assets/traits/device_item_icon.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:yonomi_device_widgets/assets/traits/unknown_item_icon.dart';
import 'package:yonomi_device_widgets/ui/widget_style_constants.dart';
import 'package:yonomi_platform_sdk/yonomi-sdk.dart';

Expand All @@ -9,16 +10,11 @@ class DeviceItemIcon {
return (determiningTrait.state.value)
? buildLockIcon()
: buildUnlockIcon();
}
if (determiningTrait is ThermostatTrait) {
} else if (determiningTrait is ThermostatTrait) {
return buildThermostatIcon(determiningTrait.state.value);
} else {
return UnknownItemIcon();
}

return Icon(
Icons.device_unknown,
size: WidgetStyleConstants.defaultDeviceIconSize,
color: WidgetStyleConstants.deviceIconColor,
);
}

static Widget buildLockIcon(
Expand Down
21 changes: 21 additions & 0 deletions lib/assets/traits/unknown_item_icon.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import 'package:bootstrap_icons/bootstrap_icons.dart';
import 'package:flutter/material.dart';
import 'package:yonomi_device_widgets/ui/widget_style_constants.dart';

class UnknownItemIcon extends StatelessWidget {
late final double _size;
late final Color _color;

UnknownItemIcon(
[double size = WidgetStyleConstants.defaultDeviceIconSize,
Color color = WidgetStyleConstants.deviceIconColor])
: super() {
this._size = WidgetStyleConstants.defaultDeviceIconSize;
this._color = WidgetStyleConstants.deviceIconColor;
}

@override
Widget build(BuildContext context) {
return Icon(BootstrapIcons.box, size: _size, color: _color);
}
}
9 changes: 9 additions & 0 deletions lib/components/unknown_widget.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import 'package:flutter/widgets.dart';

class UnknownWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
throw UnimplementedError();
}
}
1 change: 1 addition & 0 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ dependencies:
provider: ^6.0.1
flutter:
sdk: flutter
bootstrap_icons: ^1.5.0
yonomi_platform_sdk: ^2.0.0

dev_dependencies:
Expand Down
3 changes: 2 additions & 1 deletion test/assets/device_item_icon_test.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:bootstrap_icons/bootstrap_icons.dart';
import 'package:yonomi_platform_sdk/yonomi-sdk.dart' as Devices;
import 'package:yonomi_device_widgets/assets/traits/device_item_icon.dart';
import 'package:flutter/material.dart';
Expand Down Expand Up @@ -56,6 +57,6 @@ void main() {
(WidgetTester tester) async {
final unknownDevice = [UnknownTrait('unknown', Devices.IsLocked(true))];
await tester.pumpWidget(createIconWidget(unknownDevice));
expect(find.byIcon(Icons.device_unknown), findsOneWidget);
expect(find.byIcon(BootstrapIcons.box), findsOneWidget);
});
}

0 comments on commit 24b5cad

Please sign in to comment.