From 3dfbcb5935416b09eca93a65e692747d4b7af1df Mon Sep 17 00:00:00 2001 From: Faris Armoush Date: Wed, 14 May 2025 14:31:28 +0300 Subject: [PATCH] connect device dropdown to bloc. --- ...wer_clamp_energy_data_device_dropdown.dart | 89 ++++++++++--------- 1 file changed, 47 insertions(+), 42 deletions(-) diff --git a/lib/pages/analytics/modules/energy_management/widgets/power_clamp_energy_data_device_dropdown.dart b/lib/pages/analytics/modules/energy_management/widgets/power_clamp_energy_data_device_dropdown.dart index be9ce98d..ac77890c 100644 --- a/lib/pages/analytics/modules/energy_management/widgets/power_clamp_energy_data_device_dropdown.dart +++ b/lib/pages/analytics/modules/energy_management/widgets/power_clamp_energy_data_device_dropdown.dart @@ -1,4 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:syncrow_web/pages/analytics/models/analytics_device.dart'; +import 'package:syncrow_web/pages/analytics/modules/analytics/blocs/analytics_devices/analytics_devices_bloc.dart'; import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/extension/build_context_x.dart'; @@ -7,49 +10,51 @@ class PowerClampEnergyDataDeviceDropdown extends StatelessWidget { @override Widget build(BuildContext context) { - return Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(16), - border: Border.all( - color: ColorsManager.greyColor, - width: 1, - ), - ), - child: DropdownButton( - value: 'Device 1', - isDense: true, - borderRadius: BorderRadius.circular(16), - dropdownColor: ColorsManager.whiteColors, - underline: const SizedBox.shrink(), - icon: const RotatedBox( - quarterTurns: 1, - child: Icon(Icons.chevron_right, size: 16), - ), - style: context.textTheme.labelSmall?.copyWith( - color: ColorsManager.textPrimaryColor, - fontWeight: FontWeight.w700, - fontSize: 14, - ), - padding: const EdgeInsetsDirectional.symmetric( - horizontal: 20, - vertical: 2, - ), - items: [ - for (var i = 1; i < 10; i++) - DropdownMenuItem( - value: 'Device $i', - child: Text( - 'Device $i', - style: context.textTheme.labelSmall?.copyWith( - color: ColorsManager.textPrimaryColor, - fontWeight: FontWeight.w700, - fontSize: 14, - ), - ), + return BlocBuilder( + builder: (context, state) { + return Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(16), + border: Border.all( + color: ColorsManager.greyColor, + width: 1, ), - ], - onChanged: (value) {}, - ), + ), + child: DropdownButton( + value: state.selectedDevice, + isDense: true, + borderRadius: BorderRadius.circular(16), + dropdownColor: ColorsManager.whiteColors, + underline: const SizedBox.shrink(), + icon: const RotatedBox( + quarterTurns: 1, + child: Icon(Icons.chevron_right, size: 16), + ), + style: context.textTheme.labelSmall?.copyWith( + color: ColorsManager.textPrimaryColor, + fontWeight: FontWeight.w700, + fontSize: 14, + ), + padding: const EdgeInsetsDirectional.symmetric( + horizontal: 20, + vertical: 2, + ), + items: state.devices.map((e) { + return DropdownMenuItem( + value: e, + child: Text(e.uuid), + ); + }).toList(), + onChanged: (value) { + if (value case final AnalyticsDevice device) { + context.read().add( + SelectAnalyticsDeviceEvent(device), + ); + } + }, + ), + ); + }, ); } }