diff --git a/lib/features/devices/bloc/flush_sensor_bloc/flush_sensor_bloc.dart b/lib/features/devices/bloc/flush_sensor_bloc/flush_sensor_bloc.dart index 7790881..4b98da7 100644 --- a/lib/features/devices/bloc/flush_sensor_bloc/flush_sensor_bloc.dart +++ b/lib/features/devices/bloc/flush_sensor_bloc/flush_sensor_bloc.dart @@ -22,6 +22,7 @@ class FlushSensorBloc extends Bloc { on(_changeValue); on(_flushSensorUpdated); on(_getDeviceReports); + on(fetchDeviceInfo); } void _fetchFlushSensorStatus( @@ -128,5 +129,50 @@ class FlushSensorBloc extends Bloc { } } + DeviceInfoModel deviceInfo = DeviceInfoModel( + activeTime: 0, + category: "", + categoryName: "", + createTime: 0, + gatewayId: "", + icon: "", + ip: "", + lat: "", + localKey: "", + lon: "", + model: "", + name: "", + nodeId: "", + online: false, + ownerId: "", + productName: "", + sub: false, + timeZone: "", + updateTime: 0, + uuid: "", + productUuid: "", + productType: "", + permissionType: "", + macAddress: "", + subspace: Subspace( + uuid: "", + createdAt: "", + updatedAt: "", + subspaceName: "", + ), + ); + static String deviceName = ''; + void fetchDeviceInfo(FlushSensorInitialDeviseInfo event, + Emitter emit) async { + try { + emit(FlushSensorLoadingInitialState()); + var response = await DevicesAPI.getDeviceInfo(deviceId); + deviceInfo = DeviceInfoModel.fromJson(response); + deviceName = deviceInfo.name; + emit(FlushSensorLoadingDeviceInfo(deviceInfo: deviceInfo)); + } catch (e) { + emit(FlushSensorFailedState(error: e.toString())); + } + } } diff --git a/lib/features/devices/view/device_settings/profile_page.dart b/lib/features/devices/view/device_settings/profile_page.dart index bb1d1df..ad37d05 100644 --- a/lib/features/devices/view/device_settings/profile_page.dart +++ b/lib/features/devices/view/device_settings/profile_page.dart @@ -49,44 +49,7 @@ class SettingProfilePage extends StatelessWidget { }, child: ListView( children: [ - CircleAvatar( - radius: device!.type != "SOS" ? 60 : 52, - backgroundColor: Colors.white, - child: device!.type == "SOS" - ? ClipOval( - child: SvgPicture.asset( - Assets.sosHomeIcon, - fit: BoxFit.fitHeight, - height: - MediaQuery.of(context).size.height * 0.13, - )) - : CircleAvatar( - radius: 55, - backgroundColor: ColorsManager.graysColor, - child: ClipOval( - child: Column( - crossAxisAlignment: - CrossAxisAlignment.center, - mainAxisAlignment: - MainAxisAlignment.center, - children: [ - Center( - child: SvgPicture.asset( - device!.type == "4S" - ? Assets.fourSceneIcon - : Assets.sixSceneIcon, - fit: BoxFit.contain, - height: MediaQuery.of(context) - .size - .height * - 0.08, - ), - ), - ], - ), - ), - ), - ), + buildDeviceAvatar(context, device!), const SizedBox( height: 10, ), @@ -198,4 +161,45 @@ class SettingProfilePage extends StatelessWidget { ), ); } + + Widget buildDeviceAvatar(BuildContext context, DeviceModel device) { + final isSOSDevice = device.type == "SOS"; + + final assetIcon = isSOSDevice + ? Assets.sosHomeIcon + : device.type == 'NCPS' + ? Assets.flushIcon + : device.type == '4S' + ? Assets.fourSceneIcon + : Assets.sixSceneIcon; + + final avatarRadius = isSOSDevice ? 52.0 : 60.0; + final innerAvatarRadius = 55.0; + final assetHeightFactor = isSOSDevice ? 0.13 : 0.08; + + return CircleAvatar( + radius: avatarRadius, + backgroundColor: Colors.white, + child: ClipOval( + child: isSOSDevice + ? SvgPicture.asset( + assetIcon, + fit: BoxFit.fitHeight, + height: MediaQuery.of(context).size.height * assetHeightFactor, + ) + : CircleAvatar( + radius: innerAvatarRadius, + backgroundColor: ColorsManager.graysColor, + child: Center( + child: SvgPicture.asset( + assetIcon, + fit: BoxFit.contain, + height: + MediaQuery.of(context).size.height * assetHeightFactor, + ), + ), + ), + ), + ); + } } diff --git a/lib/features/devices/view/device_settings/settings_page.dart b/lib/features/devices/view/device_settings/settings_page.dart index 0d844fb..b9b1798 100644 --- a/lib/features/devices/view/device_settings/settings_page.dart +++ b/lib/features/devices/view/device_settings/settings_page.dart @@ -130,6 +130,15 @@ class SettingsPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center, children: [ + device!.type == 'NCPS' + ? SizedBox( + height: 80, + width: 50, + child: SvgPicture.asset( + Assets.flushIcon, + fit: BoxFit.contain, + ), + ): device!.type == "SOS" ? ClipOval( child: SvgPicture.asset( diff --git a/lib/features/devices/view/widgets/flush_sensor/flush_sensor_interface.dart b/lib/features/devices/view/widgets/flush_sensor/flush_sensor_interface.dart index 341ccc7..c41c781 100644 --- a/lib/features/devices/view/widgets/flush_sensor/flush_sensor_interface.dart +++ b/lib/features/devices/view/widgets/flush_sensor/flush_sensor_interface.dart @@ -62,7 +62,24 @@ class FlushMountedInterface extends StatelessWidget { ), child: DefaultScaffold( title: deviceModel.name!, - + actions: [ + InkWell( + onTap: () async { + var val = await Navigator.of(context).push( + MaterialPageRoute( + builder: (context) => + SettingsPage(device: deviceModel), + ), + ); + if (val == null) { + bloc.add(FlushSensorInitialDeviseInfo()); + bloc.add(FlushSensorInitialEvent()); + } + }, + child: SvgPicture.asset(Assets.assetsIconsSettings), + ), + const SizedBox(width: 10), + ], child: Container( width: MediaQuery.sizeOf(context).width, height: MediaQuery.sizeOf(context).height,