diff --git a/ios/Podfile.lock b/ios/Podfile.lock index b19c726..f24671a 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -9,14 +9,14 @@ PODS: - Firebase/Crashlytics (10.20.0): - Firebase/CoreOnly - FirebaseCrashlytics (~> 10.20.0) - - firebase_analytics (10.8.6): + - firebase_analytics (10.8.7): - Firebase/Analytics (= 10.20.0) - firebase_core - Flutter - - firebase_core (2.25.4): + - firebase_core (2.25.5): - Firebase/CoreOnly (= 10.20.0) - Flutter - - firebase_crashlytics (3.4.15): + - firebase_crashlytics (3.4.16): - Firebase/Crashlytics (= 10.20.0) - firebase_core - Flutter @@ -188,9 +188,9 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: Firebase: 10c8cb12fb7ad2ae0c09ffc86cd9c1ab392a0031 - firebase_analytics: 9c600045bfb4d16dd78593d18f32c99bb77e5001 - firebase_core: a46c312d8bae4defa3d009b2aa7b5b413aeb394e - firebase_crashlytics: 3054fbdd2b4a4a91f25a15e57c9f1bd2a9ed81ae + firebase_analytics: 2c1c3057d5da3bd3aab819f7e6ee153a4e46c59e + firebase_core: c8628c7ce80f79439149549052bff22f6784fbf5 + firebase_crashlytics: 012078b4eec6fc9716f97ba3da0f0e44a04e95b1 FirebaseAnalytics: a2731bf3670747ce8f65368b118d18aa8e368246 FirebaseCore: 28045c1560a2600d284b9c45a904fe322dc890b6 FirebaseCoreExtension: 1c044fd46e95036cccb29134757c499613f3f564 diff --git a/lib/features/devices/bloc/ac/ac_cubit.dart b/lib/features/devices/bloc/ac/ac_cubit.dart index a02e49d..dcb8509 100644 --- a/lib/features/devices/bloc/ac/ac_cubit.dart +++ b/lib/features/devices/bloc/ac/ac_cubit.dart @@ -43,11 +43,11 @@ class AcCubit extends Cubit { } void updateACsStatus() { - bool tempStatus = DevicesCubit.categories[0].devices[0].status ?? false; + bool? tempStatus = DevicesCubit.categories[0].devices[0].status; for (var AC in DevicesCubit.categories[0].devices) { //check if there any AC have a different status than the initial ==> turn off the universal switch if (AC.status != tempStatus) { - DevicesCubit.categories[0].devicesStatus = false; + DevicesCubit.categories[0].devicesStatus = null; emit(ACsStatusChanged()); return; } diff --git a/lib/features/devices/bloc/devices_cubit.dart b/lib/features/devices/bloc/devices_cubit.dart index 452632e..39cf86c 100644 --- a/lib/features/devices/bloc/devices_cubit.dart +++ b/lib/features/devices/bloc/devices_cubit.dart @@ -20,10 +20,18 @@ class DevicesCubit extends Cubit { } void changeCategorySwitchValue(DevicesCategoryModel category) { - category.devicesStatus = !category.devicesStatus; - for (var device in category.devices) { - device.status = category.devicesStatus; + if (category.devicesStatus != null) { + category.devicesStatus = !category.devicesStatus!; + for (var device in category.devices) { + device.status = category.devicesStatus; + } + } else { + category.devicesStatus = true; + for (var device in category.devices) { + device.status = true; + } } + emit(CategorySwitchChanged()); } diff --git a/lib/features/devices/model/device_category_model.dart b/lib/features/devices/model/device_category_model.dart index b6ff99d..e075802 100644 --- a/lib/features/devices/model/device_category_model.dart +++ b/lib/features/devices/model/device_category_model.dart @@ -7,7 +7,7 @@ class DevicesCategoryModel { final Widget page; - bool devicesStatus = false; + bool? devicesStatus = false; final List devices; final DeviceType type; diff --git a/lib/features/devices/view/widgets/ACs/universal_ac_switch.dart b/lib/features/devices/view/widgets/ACs/universal_ac_switch.dart index 1d3567d..a6abd5a 100644 --- a/lib/features/devices/view/widgets/ACs/universal_ac_switch.dart +++ b/lib/features/devices/view/widgets/ACs/universal_ac_switch.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart'; +import 'package:syncrow_app/utils/resource_manager/strings_manager.dart'; import '../../../../../utils/resource_manager/color_manager.dart'; import '../../../../shared_widgets/text_widgets/body_medium.dart'; @@ -13,9 +14,9 @@ class UniversalACSwitch extends StatelessWidget { @override Widget build(BuildContext context) { - //TODO: Move these to String Manager "ON" and "OFF" return BlocBuilder( builder: (context, state) { + bool? status = DevicesCubit.categories[0].devicesStatus; return Row( children: [ Expanded( @@ -26,8 +27,10 @@ class UniversalACSwitch extends StatelessWidget { child: Container( height: 60, decoration: BoxDecoration( - color: DevicesCubit.categories[0].devicesStatus - ? ColorsManager.primaryColor + color: status != null + ? status + ? ColorsManager.primaryColor + : Colors.white : Colors.white, borderRadius: const BorderRadius.only( topLeft: Radius.circular(15), @@ -36,9 +39,11 @@ class UniversalACSwitch extends StatelessWidget { ), child: Center( child: BodyMedium( - text: "ON", - fontColor: DevicesCubit.categories[0].devicesStatus - ? Colors.white + text: StringsManager.on, + fontColor: status != null + ? status + ? Colors.white + : null : null, fontWeight: FontWeight.bold, ), @@ -54,9 +59,11 @@ class UniversalACSwitch extends StatelessWidget { child: Container( height: 60, decoration: BoxDecoration( - color: DevicesCubit.categories[0].devicesStatus - ? Colors.white - : ColorsManager.primaryColor, + color: status != null + ? status + ? Colors.white + : ColorsManager.primaryColor + : Colors.white, borderRadius: const BorderRadius.only( topRight: Radius.circular(15), bottomRight: Radius.circular(15), @@ -64,10 +71,12 @@ class UniversalACSwitch extends StatelessWidget { ), child: Center( child: BodyMedium( - text: "OFF", - fontColor: DevicesCubit.categories[0].devicesStatus - ? null - : Colors.white, + text: StringsManager.off, + fontColor: status != null + ? status + ? null + : Colors.white + : null, fontWeight: FontWeight.bold, ), ), diff --git a/lib/features/shared_widgets/custom_switch.dart b/lib/features/shared_widgets/custom_switch.dart index 1d853d1..c84e445 100644 --- a/lib/features/shared_widgets/custom_switch.dart +++ b/lib/features/shared_widgets/custom_switch.dart @@ -22,8 +22,10 @@ class CustomSwitch extends StatelessWidget { height: 28.0, decoration: BoxDecoration( borderRadius: BorderRadius.circular(24.0), - color: category.devicesStatus - ? ColorsManager.primaryColor + color: category.devicesStatus != null + ? category.devicesStatus! + ? ColorsManager.primaryColor + : const Color(0xFFD9D9D9) : const Color(0xFFD9D9D9), ), child: Center( @@ -37,16 +39,20 @@ class CustomSwitch extends StatelessWidget { child: Padding( padding: const EdgeInsets.all(2.0), child: Container( - alignment: category.devicesStatus - ? Alignment.centerRight + alignment: category.devicesStatus != null + ? category.devicesStatus! + ? Alignment.centerRight + : Alignment.centerLeft : Alignment.centerLeft, child: Container( width: 20.0, height: 20.0, decoration: BoxDecoration( shape: BoxShape.circle, - color: category.devicesStatus - ? ColorsManager.primaryColor + color: category.devicesStatus != null + ? category.devicesStatus! + ? ColorsManager.primaryColor + : Colors.grey : Colors.grey, ), ), diff --git a/lib/utils/resource_manager/strings_manager.dart b/lib/utils/resource_manager/strings_manager.dart index 40512bb..a60d98e 100644 --- a/lib/utils/resource_manager/strings_manager.dart +++ b/lib/utils/resource_manager/strings_manager.dart @@ -22,4 +22,6 @@ class StringsManager { static const winterMode = 'Winter Mode'; static const summer = 'Summer'; static const summerMode = 'Summer Mode'; + static const on = 'ON'; + static const off = 'OFF'; } diff --git a/pubspec.lock b/pubspec.lock index 842688a..780b314 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -389,6 +389,30 @@ packages: url: "https://pub.dev" source: hosted version: "0.6.7" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" + url: "https://pub.dev" + source: hosted + version: "10.0.0" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 + url: "https://pub.dev" + source: hosted + version: "2.0.1" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 + url: "https://pub.dev" + source: hosted + version: "2.0.1" lints: dependency: transitive description: @@ -401,26 +425,26 @@ packages: dependency: transitive description: name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.dev" source: hosted - version: "0.12.16" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.8.0" meta: dependency: transitive description: name: meta - sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e + sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" nested: dependency: transitive description: @@ -441,10 +465,10 @@ packages: dependency: transitive description: name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" url: "https://pub.dev" source: hosted - version: "1.8.3" + version: "1.9.0" path_parsing: dependency: transitive description: @@ -802,6 +826,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 + url: "https://pub.dev" + source: hosted + version: "13.0.0" web: dependency: transitive description: