Skip to content

Commit

Permalink
fix: Implement full size color widget
Browse files Browse the repository at this point in the history
  • Loading branch information
rlperez committed Apr 20, 2022
1 parent 709d910 commit 23b0775
Show file tree
Hide file tree
Showing 3 changed files with 86 additions and 3 deletions.
85 changes: 82 additions & 3 deletions lib/traits/color_widget.dart
Original file line number Diff line number Diff line change
@@ -1,12 +1,91 @@
import 'package:bootstrap_icons/bootstrap_icons.dart';
import 'package:flutter/material.dart';
import 'package:flutter_colorpicker/flutter_colorpicker.dart';
import 'package:yonomi_device_widgets/assets/traits/unknown_item_icon.dart';
import 'package:yonomi_device_widgets/providers/color_provider.dart';
import 'package:yonomi_device_widgets/ui/widget_style_constants.dart';
import 'package:yonomi_platform_sdk/yonomi-sdk.dart';

class ColorWidget extends StatelessWidget {
ColorWidget(ColorProvider _colorProvider);
final ColorProvider _colorProvider;
final Color _textColor = WidgetStyleConstants.darkTextColor;
final Color _iconColor = WidgetStyleConstants.deviceDetailIconColorActive;

ColorWidget(this._colorProvider, {Key? key}) : super(key: key);

@override
Widget build(BuildContext context) {
// TODO: implement build
throw UnimplementedError();
return _colorProvider.isBusy
? Center(child: CircularProgressIndicator())
: Column(mainAxisAlignment: MainAxisAlignment.start, children: <Widget>[
Row(
children: <Widget>[
Text(
'COLOR',
style: Theme.of(context)
.textTheme
.headline6
?.copyWith(color: _textColor),
),
],
),
SizedBox(height: 10),
Center(
child: SizedBox(
width: 100,
height: 100,
child: _colorProvider.isPerformingAction
? CircularProgressIndicator()
: UnknownItemIcon(
size: 100,
color: _iconColor,
))),
SizedBox(height: 10),
_stateRow(context),
]);
}

Widget _stateRow(BuildContext context) {
final state = _colorProvider.getColorState;
if (state == null) {
return Container();
} else {
final pickedColor = HSVColor.fromAHSV(
1.0, state.h.toDouble(), state.s / 100.0, state.b / 100.0);
return Row(
children: <Widget>[
Center(
child: CircleAvatar(
backgroundColor: pickedColor.toColor(),
radius: 46,
)),
Text(
'HSB(${state.h}, ${state.s}, ${state.b})',
style: Theme.of(context)
.textTheme
.headline6
?.copyWith(color: _textColor),
),
IconButton(
onPressed: () {
SlidePicker(
pickerColor: pickedColor.toColor(),
onColorChanged: (color) {
final calculatedColor = HSVColor.fromColor(color);
_colorProvider.setColorAction(HSBColor(
calculatedColor.hue.toInt(),
(calculatedColor.saturation * 100).toInt(),
(calculatedColor.value * 100).toInt()));
},
colorModel: ColorModel.hsv,
);
},
icon: Icon(
BootstrapIcons.pencil,
color: WidgetStyleConstants.globalSuccessColor,
))
],
);
}
}
}
3 changes: 3 additions & 0 deletions lib/traits/detail_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:yonomi_device_widgets/providers/battery_level_provider.dart';
import 'package:yonomi_device_widgets/providers/brightness_provider.dart';
import 'package:yonomi_device_widgets/providers/color_provider.dart';
import 'package:yonomi_device_widgets/providers/lock_provider.dart';
import 'package:yonomi_device_widgets/providers/power_trait_provider.dart';
import 'package:yonomi_device_widgets/providers/thermostat_provider.dart';
Expand Down Expand Up @@ -32,6 +33,8 @@ class DetailScreen extends StatelessWidget {
create: (context) => ThermostatProvider(request, deviceId)),
ChangeNotifierProvider<BrightnessProvider>(
create: (context) => BrightnessProvider(request, deviceId)),
ChangeNotifierProvider<ColorProvider>(
create: (context) => ColorProvider(request, deviceId)),
],
child: DetailScreenWidget(request, deviceId),
);
Expand Down
1 change: 1 addition & 0 deletions pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ dependencies:
url: https://github.com/Yonomi/yonomi-sdk-dart
ref: DX-361_color_trait
built_value: ^8.1.4
flutter_colorpicker: ^1.0.3

dev_dependencies:
mockito: ^5.0.15
Expand Down

0 comments on commit 23b0775

Please sign in to comment.