diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
index db77bb4..fdc23c4 100644
Binary files a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
index 17987b7..63a7e34 100644
Binary files a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
index 09d4391..629b51e 100644
Binary files a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
index d5f1c8d..f2bc9ef 100644
Binary files a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index 4d6372e..837c4b2 100644
Binary files a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/assets/icons/Routine-fill.svg b/assets/icons/Routines-fill.svg
similarity index 100%
rename from assets/icons/Routine-fill.svg
rename to assets/icons/Routines-fill.svg
diff --git a/assets/icons/home-2.svg b/assets/icons/home-2.svg
deleted file mode 100644
index 9ab0dca..0000000
--- a/assets/icons/home-2.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/assets/icons/home.jpg b/assets/icons/home.jpg
deleted file mode 100644
index 8b20626..0000000
Binary files a/assets/icons/home.jpg and /dev/null differ
diff --git a/assets/icons/home.svg b/assets/icons/home.svg
index 189c2fd..9ab0dca 100644
--- a/assets/icons/home.svg
+++ b/assets/icons/home.svg
@@ -1,11 +1 @@
-
+
\ No newline at end of file
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
index d36b1fa..ac97ac1 100644
--- a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -1,122 +1,122 @@
{
"images" : [
{
- "size" : "20x20",
+ "filename" : "logo-20@2x.png",
"idiom" : "iphone",
- "filename" : "Icon-App-20x20@2x.png",
- "scale" : "2x"
+ "scale" : "2x",
+ "size" : "20x20"
},
{
- "size" : "20x20",
+ "filename" : "logo-20@3x.png",
"idiom" : "iphone",
- "filename" : "Icon-App-20x20@3x.png",
- "scale" : "3x"
+ "scale" : "3x",
+ "size" : "20x20"
},
{
- "size" : "29x29",
+ "filename" : "logo-29.png",
"idiom" : "iphone",
- "filename" : "Icon-App-29x29@1x.png",
- "scale" : "1x"
+ "scale" : "1x",
+ "size" : "29x29"
},
{
- "size" : "29x29",
+ "filename" : "logo-29@2x.png",
"idiom" : "iphone",
- "filename" : "Icon-App-29x29@2x.png",
- "scale" : "2x"
+ "scale" : "2x",
+ "size" : "29x29"
},
{
- "size" : "29x29",
+ "filename" : "logo-29@3x.png",
"idiom" : "iphone",
- "filename" : "Icon-App-29x29@3x.png",
- "scale" : "3x"
+ "scale" : "3x",
+ "size" : "29x29"
},
{
- "size" : "40x40",
+ "filename" : "logo-40@2x.png",
"idiom" : "iphone",
- "filename" : "Icon-App-40x40@2x.png",
- "scale" : "2x"
+ "scale" : "2x",
+ "size" : "40x40"
},
{
- "size" : "40x40",
+ "filename" : "logo-40@3x.png",
"idiom" : "iphone",
- "filename" : "Icon-App-40x40@3x.png",
- "scale" : "3x"
+ "scale" : "3x",
+ "size" : "40x40"
},
{
- "size" : "60x60",
+ "filename" : "logo-60@2x.png",
"idiom" : "iphone",
- "filename" : "Icon-App-60x60@2x.png",
- "scale" : "2x"
+ "scale" : "2x",
+ "size" : "60x60"
},
{
- "size" : "60x60",
+ "filename" : "logo-60@3x.png",
"idiom" : "iphone",
- "filename" : "Icon-App-60x60@3x.png",
- "scale" : "3x"
+ "scale" : "3x",
+ "size" : "60x60"
},
{
- "size" : "20x20",
+ "filename" : "logo-20.png",
"idiom" : "ipad",
- "filename" : "Icon-App-20x20@1x.png",
- "scale" : "1x"
+ "scale" : "1x",
+ "size" : "20x20"
},
{
- "size" : "20x20",
+ "filename" : "logo-20@2x 1.png",
"idiom" : "ipad",
- "filename" : "Icon-App-20x20@2x.png",
- "scale" : "2x"
+ "scale" : "2x",
+ "size" : "20x20"
},
{
- "size" : "29x29",
+ "filename" : "logo-29 1.png",
"idiom" : "ipad",
- "filename" : "Icon-App-29x29@1x.png",
- "scale" : "1x"
+ "scale" : "1x",
+ "size" : "29x29"
},
{
- "size" : "29x29",
+ "filename" : "logo-29@2x 1.png",
"idiom" : "ipad",
- "filename" : "Icon-App-29x29@2x.png",
- "scale" : "2x"
+ "scale" : "2x",
+ "size" : "29x29"
},
{
- "size" : "40x40",
+ "filename" : "logo-40.png",
"idiom" : "ipad",
- "filename" : "Icon-App-40x40@1x.png",
- "scale" : "1x"
+ "scale" : "1x",
+ "size" : "40x40"
},
{
- "size" : "40x40",
+ "filename" : "logo-40@2x 1.png",
"idiom" : "ipad",
- "filename" : "Icon-App-40x40@2x.png",
- "scale" : "2x"
+ "scale" : "2x",
+ "size" : "40x40"
},
{
- "size" : "76x76",
+ "filename" : "logo-76.png",
"idiom" : "ipad",
- "filename" : "Icon-App-76x76@1x.png",
- "scale" : "1x"
+ "scale" : "1x",
+ "size" : "76x76"
},
{
- "size" : "76x76",
+ "filename" : "logo-76@2x.png",
"idiom" : "ipad",
- "filename" : "Icon-App-76x76@2x.png",
- "scale" : "2x"
+ "scale" : "2x",
+ "size" : "76x76"
},
{
- "size" : "83.5x83.5",
+ "filename" : "logo-83.5@2x.png",
"idiom" : "ipad",
- "filename" : "Icon-App-83.5x83.5@2x.png",
- "scale" : "2x"
+ "scale" : "2x",
+ "size" : "83.5x83.5"
},
{
- "size" : "1024x1024",
+ "filename" : "logo-1024.png",
"idiom" : "ios-marketing",
- "filename" : "Icon-App-1024x1024@1x.png",
- "scale" : "1x"
+ "scale" : "1x",
+ "size" : "1024x1024"
}
],
"info" : {
- "version" : 1,
- "author" : "xcode"
+ "author" : "xcode",
+ "version" : 1
}
}
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
deleted file mode 100644
index dc9ada4..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
deleted file mode 100644
index 7353c41..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
deleted file mode 100644
index 797d452..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
deleted file mode 100644
index 6ed2d93..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
deleted file mode 100644
index 4cd7b00..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
deleted file mode 100644
index fe73094..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
deleted file mode 100644
index 321773c..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
deleted file mode 100644
index 797d452..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
deleted file mode 100644
index 502f463..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
deleted file mode 100644
index 0ec3034..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
deleted file mode 100644
index 0ec3034..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
deleted file mode 100644
index e9f5fea..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
deleted file mode 100644
index 84ac32a..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
deleted file mode 100644
index 8953cba..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
deleted file mode 100644
index 0467bf1..0000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024.png
new file mode 100644
index 0000000..20102d9
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-1024.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-20.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-20.png
new file mode 100644
index 0000000..03f60c3
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-20.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-20@2x 1.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-20@2x 1.png
new file mode 100644
index 0000000..fe27f08
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-20@2x 1.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-20@2x.png
new file mode 100644
index 0000000..fe27f08
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-20@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-20@3x.png
new file mode 100644
index 0000000..1d09d46
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-20@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-29 1.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-29 1.png
new file mode 100644
index 0000000..490fd47
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-29 1.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-29.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-29.png
new file mode 100644
index 0000000..490fd47
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-29.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-29@2x 1.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-29@2x 1.png
new file mode 100644
index 0000000..90ce766
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-29@2x 1.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-29@2x.png
new file mode 100644
index 0000000..90ce766
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-29@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-29@3x.png
new file mode 100644
index 0000000..b33e6bc
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-29@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-40.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-40.png
new file mode 100644
index 0000000..fe27f08
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-40.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-40@2x 1.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-40@2x 1.png
new file mode 100644
index 0000000..240758a
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-40@2x 1.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-40@2x.png
new file mode 100644
index 0000000..240758a
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-40@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-40@3x.png
new file mode 100644
index 0000000..dc30e8e
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-40@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-60@2x.png
new file mode 100644
index 0000000..dc30e8e
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-60@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-60@3x.png
new file mode 100644
index 0000000..dbaf1a7
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-60@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-76.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-76.png
new file mode 100644
index 0000000..93043c1
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-76.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-76@2x.png
new file mode 100644
index 0000000..92107f2
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-76@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-83.5@2x.png
new file mode 100644
index 0000000..039243c
Binary files /dev/null and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/logo-83.5@2x.png differ
diff --git a/lib/features/dashboard/view/dashboard_view.dart b/lib/features/dashboard/view/dashboard_view.dart
index eb9340f..ee8c150 100644
--- a/lib/features/dashboard/view/dashboard_view.dart
+++ b/lib/features/dashboard/view/dashboard_view.dart
@@ -1,4 +1,6 @@
+import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
+import 'package:flutter/widgets.dart';
import 'package:gap/gap.dart';
import 'package:syncrow_app/features/dashboard/view/widgets/carbon_emission.dart';
import 'package:syncrow_app/features/dashboard/view/widgets/consumption.dart';
@@ -13,31 +15,33 @@ class DashboardView extends StatelessWidget {
@override
Widget build(BuildContext context) {
- return const Column(
+ return Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
- TitleMedium(
+ const TitleMedium(
text: StringsManager.dashboard,
style: TextStyle(
fontSize: 32,
fontWeight: FontWeight.bold,
),
),
- LiveMonitorTab(),
- Gap(10),
- EnergyUsage(),
- Expanded(
- child: Padding(
- padding: EdgeInsets.only(top: 20),
- child: Column(
- mainAxisAlignment: MainAxisAlignment.start,
- children: [
- Consumption(),
- Gap(20),
- CarbonEmission(),
- ],
- ),
+ const LiveMonitorTab(),
+ const Gap(10),
+ const EnergyUsage(),
+ Container(
+ padding: const EdgeInsets.only(top: 20),
+ constraints: const BoxConstraints(
+ minHeight: 220,
+ maxHeight: 240,
+ ),
+ child: const Column(
+ mainAxisAlignment: MainAxisAlignment.start,
+ children: [
+ Consumption(),
+ Gap(20),
+ CarbonEmission(),
+ ],
),
),
],
diff --git a/lib/features/dashboard/view/widgets/carbon_emission.dart b/lib/features/dashboard/view/widgets/carbon_emission.dart
index fe49034..87dcb60 100644
--- a/lib/features/dashboard/view/widgets/carbon_emission.dart
+++ b/lib/features/dashboard/view/widgets/carbon_emission.dart
@@ -15,11 +15,15 @@ class CarbonEmission extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
- padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
+ padding: const EdgeInsets.only(right: 20, left: 20, top: 10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
),
+ constraints: const BoxConstraints(
+ minHeight: 80,
+ maxHeight: 100,
+ ),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
diff --git a/lib/features/dashboard/view/widgets/card_title.dart b/lib/features/dashboard/view/widgets/card_title.dart
index 123a4b0..4e64e7c 100644
--- a/lib/features/dashboard/view/widgets/card_title.dart
+++ b/lib/features/dashboard/view/widgets/card_title.dart
@@ -14,7 +14,7 @@ class CardTitle extends StatelessWidget {
return BodySmall(
text: title,
fontColor: Colors.grey,
- fontSize: 12,
+ fontSize: MediaQuery.sizeOf(context).height.ceil() > 680 ? 12 : 8,
);
}
}
diff --git a/lib/features/dashboard/view/widgets/consumption.dart b/lib/features/dashboard/view/widgets/consumption.dart
index 4dfebd8..0952b87 100644
--- a/lib/features/dashboard/view/widgets/consumption.dart
+++ b/lib/features/dashboard/view/widgets/consumption.dart
@@ -14,41 +14,48 @@ class Consumption extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Container(
- padding: const EdgeInsets.symmetric(horizontal: 20, vertical: 10),
+ padding: const EdgeInsets.only(right: 20, left: 20, top: 10, bottom: 10),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(20),
),
+ constraints: const BoxConstraints(
+ minHeight: 80,
+ maxHeight: 100,
+ ),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
- crossAxisAlignment: CrossAxisAlignment.end,
children: [
- const Column(
- mainAxisAlignment: MainAxisAlignment.end,
+ Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
- CardTitle(
+ const CardTitle(
title: StringsManager.ACConsumption,
),
- Gap(10),
+ const Spacer(),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
UnitedText(
value: "2",
- valueSize: 35,
+ valueSize: MediaQuery.sizeOf(context).height.ceil() > 680
+ ? 35
+ : 24,
valueWeight: FontWeight.normal,
unit: "Units",
),
- Gap(30),
+ const Gap(30),
UnitedText(
- value: "720",
- valueSize: 35,
+ value: "${MediaQuery.sizeOf(context).height.ceil()}",
+ valueSize: MediaQuery.sizeOf(context).height.ceil() > 680
+ ? 35
+ : 24,
valueWeight: FontWeight.normal,
unit: "kWh",
),
],
),
+ const Spacer(),
],
),
//TODO: Replace with actual pie chart
diff --git a/lib/features/devices/bloc/ac_cubit.dart b/lib/features/devices/bloc/ac_cubit.dart
index 09220a3..e1c67c0 100644
--- a/lib/features/devices/bloc/ac_cubit.dart
+++ b/lib/features/devices/bloc/ac_cubit.dart
@@ -1,21 +1,46 @@
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:meta/meta.dart';
import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart';
+import 'package:syncrow_app/features/devices/model/ac_model.dart';
part 'ac_state.dart';
class AcCubit extends Cubit {
- AcCubit() : super(AcInitial());
+ AcCubit() : super(AcInitial()) {
+ averageTempForAll();
+ updateACsStatus();
+ }
static AcCubit get(context) => BlocProvider.of(context);
- bool areAllACsOff() {
- for (var ac in DevicesCubit.categories[0].devices) {
- if (ac.status) {
- return false;
- }
+ void turnACOn(ACModel model) {
+ if (!model.status) {
+ model.status = true;
+ updateACsStatus();
+ emit(ACTurnedOn());
+ }
+ }
+
+ void turnACOff(ACModel model) {
+ if (model.status) {
+ model.status = false;
+ updateACsStatus();
+ emit(ACTurnedOff());
+ }
+ }
+
+ void updateACsStatus() {
+ 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;
+ emit(ACsStatusChanged());
+ return;
+ }
+ DevicesCubit.categories[0].devicesStatus = tempStatus;
+ emit(ACsStatusChanged());
}
- return true;
}
void turnAllACsOff() {
@@ -36,21 +61,45 @@ class AcCubit extends Cubit {
for (var ac in DevicesCubit.categories[0].devices) {
ac.temperature = temperature;
}
- emit(ACsTempChanged());
+ averageTempForAll();
+ emit(ACsTempChanged(temperature));
}
- double averageTempForAll() {
- double allTemp = 0;
- for (var ac in DevicesCubit.categories[0].devices) {
- allTemp += ac.temperature;
- }
- emit(ACsTempChanged());
+ // void setACTemp(int index, double temperature) {
+ // DevicesCubit.categories[0].devices[index].temperature = temperature;
+ // averageTempForAll();
+ // emit(ACsTempChanged(temperature));
+ // }
- double averageTemp = allTemp / DevicesCubit.categories[0].devices.length;
+ void increaseACTemp(int index) {
+ DevicesCubit.categories[0].devices[index].temperature += .5;
+ averageTempForAll();
+ emit(ACsTempChanged(DevicesCubit.categories[0].devices[index].temperature));
+ }
+
+ void decreaseACTemp(int index) {
+ DevicesCubit.categories[0].devices[index].temperature -= .5;
+ averageTempForAll();
+ emit(ACsTempChanged(DevicesCubit.categories[0].devices[index].temperature));
+ }
+
+ double getTemp(int index) {
+ return DevicesCubit.categories[0].devices[index].temperature;
+ }
+
+ static double averageTemp = 0;
+
+ void averageTempForAll() {
+ double tempSum = 0;
+ for (var ac in DevicesCubit.categories[0].devices) {
+ tempSum += ac.temperature;
+ }
+
+ averageTemp = tempSum / DevicesCubit.categories[0].devices.length;
averageTemp = (averageTemp * 2).round() / 2;
- return averageTemp;
+ emit(ACsAverageTemp());
}
/// implement the fan speed and temp mode change
diff --git a/lib/features/devices/bloc/ac_state.dart b/lib/features/devices/bloc/ac_state.dart
index d46b3cf..14ded7d 100644
--- a/lib/features/devices/bloc/ac_state.dart
+++ b/lib/features/devices/bloc/ac_state.dart
@@ -5,12 +5,24 @@ abstract class AcState {}
class AcInitial extends AcState {}
+class ACsStatusChanged extends AcState {}
+
class SwitchACsOff extends AcState {}
class SwitchACsOn extends AcState {}
-class ACsTempChanged extends AcState {}
+class ACsTempChanged extends AcState {
+ final double temperature;
+
+ ACsTempChanged(this.temperature);
+}
+
+class ACsAverageTemp extends AcState {}
class ACsFanSpeedChanged extends AcState {}
class ACsTempModeChanged extends AcState {}
+
+class ACTurnedOn extends AcState {}
+
+class ACTurnedOff extends AcState {}
diff --git a/lib/features/devices/bloc/devices_cubit.dart b/lib/features/devices/bloc/devices_cubit.dart
index 381c900..e45a6d6 100644
--- a/lib/features/devices/bloc/devices_cubit.dart
+++ b/lib/features/devices/bloc/devices_cubit.dart
@@ -18,18 +18,13 @@ class DevicesCubit extends Cubit {
// getCategories();
}
- /// separate the cubit into different cubits based on devices type
- static bool ACSwitchValue = false;
- static bool lightsSwitchValue = false;
- static bool doorSwitchValue = false;
- static bool curtainSwitchValue = false;
- static bool screensSwitchValue = false;
- static bool gatewaySwitchValue = false;
-
void changeCategorySwitchValue(DevicesCategoryModel category) {
- category.switchValue = !category.switchValue;
+ category.devicesStatus = !category.devicesStatus;
+ for (var device in category.devices) {
+ device.status = category.devicesStatus;
+ }
emit(CategorySwitchChanged());
- print('${category.name} switch value: ${category.switchValue} ');
+ print('${category.name} switch value: ${category.devicesStatus} ');
}
static DevicesCubit get(context) => BlocProvider.of(context);
@@ -56,7 +51,6 @@ class DevicesCubit extends Cubit {
],
icon: Assets.iconsAC,
name: 'ACs',
- switchValue: ACSwitchValue,
type: DeviceType.AC,
page: const ACView(),
),
@@ -64,7 +58,6 @@ class DevicesCubit extends Cubit {
devices: [],
icon: Assets.iconsLight,
name: 'Lights',
- switchValue: lightsSwitchValue,
type: DeviceType.Lights,
page: const LightsView(),
),
@@ -72,7 +65,6 @@ class DevicesCubit extends Cubit {
devices: [],
icon: Assets.iconsDoorLock,
name: 'Doors',
- switchValue: doorSwitchValue,
type: DeviceType.Door,
page: const DoorView(),
),
@@ -80,7 +72,6 @@ class DevicesCubit extends Cubit {
devices: [],
icon: Assets.iconsCurtain,
name: 'Curtains',
- switchValue: curtainSwitchValue,
type: DeviceType.Curtain,
page: const CurtainView(),
),
@@ -88,7 +79,6 @@ class DevicesCubit extends Cubit {
devices: [],
icon: Assets.iconsScreen,
name: 'Screens',
- switchValue: screensSwitchValue,
type: DeviceType.Screens,
page: const ScreensView(),
),
@@ -96,13 +86,12 @@ class DevicesCubit extends Cubit {
devices: [],
icon: Assets.iconsGateway,
name: 'Gateway',
- switchValue: gatewaySwitchValue,
type: DeviceType.Gateway,
page: const GateWayView(),
),
];
- Widget? get chosenCategory {
+ Widget? get chosenCategoryView {
for (var category in categories) {
if (category.isSelected) {
return category.page;
@@ -111,7 +100,17 @@ class DevicesCubit extends Cubit {
return null;
}
- void updateCategory(int index) {
+ void areAllDevicesOff(DevicesCategoryModel category) {
+ for (var device in category.devices) {
+ if (device.status) {
+ category.devicesStatus = false;
+ emit(CategorySwitchChanged());
+ return;
+ }
+ }
+ }
+
+ void selectCategory(int index) {
for (var i = 0; i < categories.length; i++) {
if (i == index) {
categories[i].isSelected = true;
diff --git a/lib/features/devices/model/device_category_model.dart b/lib/features/devices/model/device_category_model.dart
index b2743cb..172bcf4 100644
--- a/lib/features/devices/model/device_category_model.dart
+++ b/lib/features/devices/model/device_category_model.dart
@@ -8,7 +8,7 @@ class DevicesCategoryModel {
final Widget page;
- bool switchValue;
+ bool devicesStatus = false;
final List devices;
final DeviceType type;
@@ -20,8 +20,21 @@ class DevicesCategoryModel {
required this.type,
required this.name,
required this.icon,
- required this.switchValue,
- required this.devices});
+ required this.devices}) {
+ //sets the initial status of the devices
+ if (devices.isNotEmpty) {
+ bool tempStatus = devices.first.status;
+ for (var device in devices) {
+ if (device.status != tempStatus) {
+ devicesStatus = false;
+ break;
+ }
+ }
+ devicesStatus = tempStatus;
+ } else {
+ devicesStatus = false;
+ }
+ }
}
enum DeviceType {
diff --git a/lib/features/devices/view/widgets/ACs/ac_view.dart b/lib/features/devices/view/widgets/ACs/ac_view.dart
index a9b908b..a456836 100644
--- a/lib/features/devices/view/widgets/ACs/ac_view.dart
+++ b/lib/features/devices/view/widgets/ACs/ac_view.dart
@@ -51,7 +51,7 @@ class ACView extends StatelessWidget {
),
const Gap(10),
DevicesTempWidget(
- model: DevicesCubit.categories[0].devices[index],
+ index,
),
const Gap(10),
ACControlUnit(
diff --git a/lib/features/devices/view/widgets/ACs/universal_a_c_switch.dart b/lib/features/devices/view/widgets/ACs/universal_a_c_switch.dart
index a118c68..4de5c8e 100644
--- a/lib/features/devices/view/widgets/ACs/universal_a_c_switch.dart
+++ b/lib/features/devices/view/widgets/ACs/universal_a_c_switch.dart
@@ -1,4 +1,6 @@
import 'package:flutter/material.dart';
+import 'package:flutter_bloc/flutter_bloc.dart';
+import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart';
import '../../../../../utils/resource_manager/color_manager.dart';
import '../../../../shared_widgets/text_widgets/body_medium.dart';
@@ -11,60 +13,70 @@ class UniversalACSwitch extends StatelessWidget {
@override
Widget build(BuildContext context) {
- bool acsStatus = AcCubit.get(context).areAllACsOff();
-
//TODO: Move these to String Manager "ON" and "OFF"
- return Row(
- children: [
- Expanded(
- child: InkWell(
- onTap: () {
- AcCubit.get(context).turnAllACsOn();
- },
- child: Container(
- height: 60,
- decoration: BoxDecoration(
- color: acsStatus ? ColorsManager.primaryColor : Colors.white,
- borderRadius: const BorderRadius.only(
- topLeft: Radius.circular(15),
- bottomLeft: Radius.circular(15),
- ),
- ),
- child: Center(
- child: BodyMedium(
- text: "ON",
- fontColor: acsStatus ? Colors.white : null,
- fontWeight: FontWeight.bold,
+ return BlocBuilder(
+ builder: (context, state) {
+ return Row(
+ children: [
+ Expanded(
+ child: InkWell(
+ onTap: () {
+ AcCubit.get(context).turnAllACsOn();
+ },
+ child: Container(
+ height: 60,
+ decoration: BoxDecoration(
+ color: DevicesCubit.categories[0].devicesStatus
+ ? ColorsManager.primaryColor
+ : Colors.white,
+ borderRadius: const BorderRadius.only(
+ topLeft: Radius.circular(15),
+ bottomLeft: Radius.circular(15),
+ ),
+ ),
+ child: Center(
+ child: BodyMedium(
+ text: "ON",
+ fontColor: DevicesCubit.categories[0].devicesStatus
+ ? Colors.white
+ : null,
+ fontWeight: FontWeight.bold,
+ ),
+ ),
),
),
),
- ),
- ),
- Expanded(
- child: InkWell(
- onTap: () {
- AcCubit.get(context).turnAllACsOff();
- },
- child: Container(
- height: 60,
- decoration: BoxDecoration(
- color: acsStatus ? Colors.white : ColorsManager.primaryColor,
- borderRadius: const BorderRadius.only(
- topRight: Radius.circular(15),
- bottomRight: Radius.circular(15),
- ),
- ),
- child: Center(
- child: BodyMedium(
- text: "OFF",
- fontColor: acsStatus ? null : Colors.white,
- fontWeight: FontWeight.bold,
+ Expanded(
+ child: InkWell(
+ onTap: () {
+ AcCubit.get(context).turnAllACsOff();
+ },
+ child: Container(
+ height: 60,
+ decoration: BoxDecoration(
+ color: DevicesCubit.categories[0].devicesStatus
+ ? Colors.white
+ : ColorsManager.primaryColor,
+ borderRadius: const BorderRadius.only(
+ topRight: Radius.circular(15),
+ bottomRight: Radius.circular(15),
+ ),
+ ),
+ child: Center(
+ child: BodyMedium(
+ text: "OFF",
+ fontColor: DevicesCubit.categories[0].devicesStatus
+ ? null
+ : Colors.white,
+ fontWeight: FontWeight.bold,
+ ),
+ ),
),
),
),
- ),
- ),
- ],
+ ],
+ );
+ },
);
}
}
diff --git a/lib/features/devices/view/widgets/ACs/universal_a_c_temp.dart b/lib/features/devices/view/widgets/ACs/universal_a_c_temp.dart
index 3d2044d..fdb6ea2 100644
--- a/lib/features/devices/view/widgets/ACs/universal_a_c_temp.dart
+++ b/lib/features/devices/view/widgets/ACs/universal_a_c_temp.dart
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
+import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_svg/svg.dart';
import 'package:syncrow_app/features/devices/bloc/ac_cubit.dart';
import 'package:syncrow_app/utils/context_extension.dart';
@@ -15,45 +16,48 @@ class UniversalACTemp extends StatelessWidget {
@override
Widget build(BuildContext context) {
- double averageTemp = AcCubit.get(context).averageTempForAll();
- return DefaultContainer(
- height: 60,
- child: Row(
- mainAxisAlignment: MainAxisAlignment.spaceEvenly,
- children: [
- SizedBox.square(
- dimension: 24,
- child: InkWell(
- onTap: () {
- AcCubit.get(context).setTempToAll(averageTemp + .5);
- },
- child: SvgPicture.asset(
- Assets.iconsMinus,
+ return BlocBuilder(
+ builder: (context, state) {
+ return DefaultContainer(
+ height: 60,
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceEvenly,
+ children: [
+ SizedBox.square(
+ dimension: 24,
+ child: InkWell(
+ onTap: () {
+ AcCubit.get(context).setTempToAll(AcCubit.averageTemp + .5);
+ },
+ child: SvgPicture.asset(
+ Assets.iconsMinus,
+ ),
+ ),
),
- ),
- ),
- BodyLarge(
- text: "${AcCubit.get(context).averageTempForAll()}° C",
- style: context.bodyLarge.copyWith(
- color: ColorsManager.primaryColor.withOpacity(0.6),
- fontSize: 23,
- ),
- ),
- SizedBox.square(
- dimension: 24,
- child: InkWell(
- onTap: () {
- AcCubit.get(context).setTempToAll(averageTemp + .5);
- },
- child: SvgPicture.asset(
- Assets.iconsPlus,
- height: 24,
- width: 24,
+ BodyLarge(
+ text: "${AcCubit.averageTemp}° C",
+ style: context.bodyLarge.copyWith(
+ color: ColorsManager.primaryColor.withOpacity(0.6),
+ fontSize: 23,
+ ),
),
- ),
+ SizedBox.square(
+ dimension: 24,
+ child: InkWell(
+ onTap: () {
+ AcCubit.get(context).setTempToAll(AcCubit.averageTemp + .5);
+ },
+ child: SvgPicture.asset(
+ Assets.iconsPlus,
+ height: 24,
+ width: 24,
+ ),
+ ),
+ ),
+ ],
),
- ],
- ),
+ );
+ },
);
}
}
diff --git a/lib/features/devices/view/widgets/categories_view.dart b/lib/features/devices/view/widgets/categories_view.dart
index 36bc07e..fc5b41e 100644
--- a/lib/features/devices/view/widgets/categories_view.dart
+++ b/lib/features/devices/view/widgets/categories_view.dart
@@ -31,17 +31,19 @@ class CategoriesView extends StatelessWidget {
),
Expanded(
flex: 3,
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [
- TitleMedium(
- text: StringsManager.wizard,
- style: TextStyle(
- fontSize: 28,
+ child: SingleChildScrollView(
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ TitleMedium(
+ text: StringsManager.wizard,
+ style: TextStyle(
+ fontSize: 28,
+ ),
),
- ),
- Switches(),
- ],
+ Switches(),
+ ],
+ ),
),
)
],
diff --git a/lib/features/devices/view/widgets/devices_temp_widget.dart b/lib/features/devices/view/widgets/devices_temp_widget.dart
index 327b5f1..25e78e2 100644
--- a/lib/features/devices/view/widgets/devices_temp_widget.dart
+++ b/lib/features/devices/view/widgets/devices_temp_widget.dart
@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
-import 'package:syncrow_app/features/devices/model/ac_model.dart';
+import 'package:syncrow_app/features/devices/bloc/ac_cubit.dart';
import 'package:syncrow_app/features/shared_widgets/default_container.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_large.dart';
import 'package:syncrow_app/utils/context_extension.dart';
@@ -8,21 +8,15 @@ import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
import '../../../../generated/assets.dart';
-class DevicesTempWidget extends StatefulWidget {
- const DevicesTempWidget({
+class DevicesTempWidget extends StatelessWidget {
+ const DevicesTempWidget(
+ this.index, {
super.key,
- required this.model,
});
- final ACModel model;
+ final int index;
- @override
- State createState() => _DevicesTempWidgetState();
-}
-
-class _DevicesTempWidgetState extends State {
// double temp = widget.model.temperature;
-
@override
Widget build(BuildContext context) {
return DefaultContainer(
@@ -34,10 +28,7 @@ class _DevicesTempWidgetState extends State {
dimension: 24,
child: InkWell(
onTap: () {
- setState(() {
- // temp = temp - .5;
- widget.model.temperature = widget.model.temperature - .5;
- });
+ AcCubit.get(context).decreaseACTemp(index);
},
child: SvgPicture.asset(
Assets.iconsMinus,
@@ -45,7 +36,7 @@ class _DevicesTempWidgetState extends State {
),
),
BodyLarge(
- text: "${widget.model.temperature}° C",
+ text: "${AcCubit.get(context).getTemp(index)}° C",
style: context.bodyLarge.copyWith(
color: ColorsManager.primaryColor.withOpacity(0.6),
fontSize: 23,
@@ -55,10 +46,7 @@ class _DevicesTempWidgetState extends State {
dimension: 24,
child: InkWell(
onTap: () {
- setState(() {
- // temp = temp + .5
- widget.model.temperature = widget.model.temperature + .5;
- });
+ AcCubit.get(context).increaseACTemp(index);
},
child: SvgPicture.asset(
Assets.iconsPlus,
diff --git a/lib/features/devices/view/widgets/devices_view_body.dart b/lib/features/devices/view/widgets/devices_view_body.dart
index 9bba301..45b950e 100644
--- a/lib/features/devices/view/widgets/devices_view_body.dart
+++ b/lib/features/devices/view/widgets/devices_view_body.dart
@@ -17,7 +17,7 @@ class DevicesViewBody extends StatelessWidget {
builder: (context, state) {
return state is DevicesLoading
? const Center(child: CircularProgressIndicator())
- : DevicesCubit.get(context).chosenCategory ??
+ : DevicesCubit.get(context).chosenCategoryView ??
const CategoriesView();
},
),
diff --git a/lib/features/devices/view/widgets/switches.dart b/lib/features/devices/view/widgets/switches.dart
index 5759053..f5b0cc0 100644
--- a/lib/features/devices/view/widgets/switches.dart
+++ b/lib/features/devices/view/widgets/switches.dart
@@ -4,7 +4,7 @@ import 'package:flutter_svg/svg.dart';
import 'package:syncrow_app/features/shared_widgets/custom_switch.dart';
import 'package:syncrow_app/features/shared_widgets/default_container.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_large.dart';
-import 'package:syncrow_app/utils/resource_manager/font_manager.dart';
+import 'package:syncrow_app/utils/context_extension.dart';
import '../../bloc/devices_cubit.dart';
@@ -30,11 +30,10 @@ class Switches extends StatelessWidget {
itemCount: DevicesCubit.categories.length,
itemBuilder: (_, index) {
return InkWell(
- onTap: () => DevicesCubit.get(context).updateCategory(index),
+ onTap: () => DevicesCubit.get(context).selectCategory(index),
child: DefaultContainer(
child: Padding(
- padding:
- const EdgeInsets.symmetric(vertical: 10, horizontal: 10),
+ padding: const EdgeInsets.only(top: 10, right: 10, left: 10),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
@@ -47,15 +46,24 @@ class Switches extends StatelessWidget {
DevicesCubit.categories[index].icon,
fit: BoxFit.contain,
),
- CustomSwitch(),
+ CustomSwitch(
+ category: DevicesCubit.categories[index],
+ ),
],
),
- BodyLarge(
- text: DevicesCubit.categories[index].name,
- fontWeight: FontsManager.bold,
- fontSize: 24,
- fontColor: const Color(0xFF848484),
- )
+ Expanded(
+ child: FittedBox(
+ fit: BoxFit.scaleDown,
+ child: BodyLarge(
+ text: DevicesCubit.categories[index].name,
+ style: context.bodyLarge.copyWith(
+ fontWeight: FontWeight.bold,
+ height: 0,
+ fontSize: 24,
+ ),
+ ),
+ ),
+ ),
],
),
),
diff --git a/lib/features/shared_widgets/custom_switch.dart b/lib/features/shared_widgets/custom_switch.dart
index 614a964..1d853d1 100644
--- a/lib/features/shared_widgets/custom_switch.dart
+++ b/lib/features/shared_widgets/custom_switch.dart
@@ -1,69 +1,30 @@
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/features/devices/model/device_category_model.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
-class CustomSwitch extends StatefulWidget {
- // final bool value;
- // final ValueChanged onChanged;
+class CustomSwitch extends StatelessWidget {
+ const CustomSwitch({super.key, required this.category});
- const CustomSwitch({
- super.key,
- // required this.value,
- // required this.onChanged,
- });
-
- @override
- _CustomSwitchState createState() => _CustomSwitchState();
-}
-
-class _CustomSwitchState extends State
- with SingleTickerProviderStateMixin {
- Animation? _circleAnimation;
- AnimationController? _animationController;
-
- bool value = false;
-
- void onChange(bool customValue) {
- value = customValue;
- }
-
- @override
- void initState() {
- super.initState();
- _animationController = AnimationController(
- vsync: this, duration: const Duration(milliseconds: 300));
- _circleAnimation = AlignmentTween(
- begin: value ? Alignment.centerRight : Alignment.centerLeft,
- end: value ? Alignment.centerLeft : Alignment.centerRight,
- ).animate(
- CurvedAnimation(
- parent: _animationController!,
- curve: Curves.linear,
- ),
- );
- }
+ final DevicesCategoryModel category;
@override
Widget build(BuildContext context) {
- return AnimatedBuilder(
- animation: _animationController!,
- builder: (context, child) {
+ return BlocBuilder(
+ builder: (context, state) {
return GestureDetector(
onTap: () {
- setState(() {
- _animationController!.isCompleted
- ? _animationController!.reverse()
- : _animationController!.forward();
- value ? onChange(false) : onChange(true);
- });
+ DevicesCubit.get(context).changeCategorySwitchValue(category);
},
child: Container(
width: 45.0,
height: 28.0,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(24.0),
- color: _circleAnimation!.value == Alignment.centerLeft
- ? Color(0xFFD9D9D9)
- : ColorsManager.primaryColor,
+ color: category.devicesStatus
+ ? ColorsManager.primaryColor
+ : const Color(0xFFD9D9D9),
),
child: Center(
child: Container(
@@ -76,16 +37,17 @@ class _CustomSwitchState extends State
child: Padding(
padding: const EdgeInsets.all(2.0),
child: Container(
- alignment:
- value ? Alignment.centerRight : Alignment.centerLeft,
+ alignment: category.devicesStatus
+ ? Alignment.centerRight
+ : Alignment.centerLeft,
child: Container(
width: 20.0,
height: 20.0,
decoration: BoxDecoration(
shape: BoxShape.circle,
- color: _circleAnimation!.value == Alignment.centerLeft
- ? Color(0xFFD9D9D9)
- : ColorsManager.primaryColor,
+ color: category.devicesStatus
+ ? ColorsManager.primaryColor
+ : Colors.grey,
),
),
),
diff --git a/lib/features/shared_widgets/devices_default_switch.dart b/lib/features/shared_widgets/devices_default_switch.dart
index 5b007ee..5d2a875 100644
--- a/lib/features/shared_widgets/devices_default_switch.dart
+++ b/lib/features/shared_widgets/devices_default_switch.dart
@@ -1,9 +1,11 @@
import 'package:flutter/material.dart';
+import 'package:flutter_bloc/flutter_bloc.dart';
+import 'package:syncrow_app/features/devices/bloc/ac_cubit.dart';
import 'package:syncrow_app/features/devices/model/ac_model.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_medium.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
-class DevicesDefaultSwitch extends StatefulWidget {
+class DevicesDefaultSwitch extends StatelessWidget {
const DevicesDefaultSwitch({
super.key,
required this.model,
@@ -11,73 +13,67 @@ class DevicesDefaultSwitch extends StatefulWidget {
final ACModel model;
- @override
- State createState() => _DevicesDefaultSwitchState();
-}
-
-class _DevicesDefaultSwitchState extends State {
@override
Widget build(BuildContext context) {
- return Row(
- children: [
- Expanded(
- child: InkWell(
- onTap: () {
- setState(() {
- // isOn = !isOn;
- widget.model.status = !widget.model.status;
- });
- },
- child: Container(
- height: 60,
- decoration: BoxDecoration(
- color: widget.model.status
- ? ColorsManager.primaryColor
- : Colors.white,
- borderRadius: const BorderRadius.only(
- topLeft: Radius.circular(15),
- bottomLeft: Radius.circular(15),
- ),
- ),
- child: Center(
- child: BodyMedium(
- text: "ON",
- fontColor: widget.model.status ? Colors.white : null,
- fontWeight: FontWeight.bold,
+ return BlocBuilder(
+ builder: (context, state) {
+ return Row(
+ children: [
+ Expanded(
+ child: InkWell(
+ onTap: () {
+ AcCubit.get(context).turnACOn(model);
+ },
+ child: Container(
+ height: 60,
+ decoration: BoxDecoration(
+ color: model.status
+ ? ColorsManager.primaryColor
+ : Colors.white,
+ borderRadius: const BorderRadius.only(
+ topLeft: Radius.circular(15),
+ bottomLeft: Radius.circular(15),
+ ),
+ ),
+ child: Center(
+ child: BodyMedium(
+ text: "ON",
+ fontColor: model.status ? Colors.white : null,
+ fontWeight: FontWeight.bold,
+ ),
+ ),
),
),
),
- ),
- ),
- Expanded(
- child: InkWell(
- onTap: () {
- setState(() {
- widget.model.status = !widget.model.status;
- });
- },
- child: Container(
- height: 60,
- decoration: BoxDecoration(
- color: widget.model.status
- ? Colors.white
- : ColorsManager.primaryColor,
- borderRadius: const BorderRadius.only(
- topRight: Radius.circular(15),
- bottomRight: Radius.circular(15),
- ),
- ),
- child: Center(
- child: BodyMedium(
- text: "OFF",
- fontColor: widget.model.status ? null : Colors.white,
- fontWeight: FontWeight.bold,
+ Expanded(
+ child: InkWell(
+ onTap: () {
+ AcCubit.get(context).turnACOff(model);
+ },
+ child: Container(
+ height: 60,
+ decoration: BoxDecoration(
+ color: model.status
+ ? Colors.white
+ : ColorsManager.primaryColor,
+ borderRadius: const BorderRadius.only(
+ topRight: Radius.circular(15),
+ bottomRight: Radius.circular(15),
+ ),
+ ),
+ child: Center(
+ child: BodyMedium(
+ text: "OFF",
+ fontColor: model.status ? null : Colors.white,
+ fontWeight: FontWeight.bold,
+ ),
+ ),
),
),
),
- ),
- ),
- ],
+ ],
+ );
+ },
);
}
}
diff --git a/lib/features/shared_widgets/text_widgets/body_large.dart b/lib/features/shared_widgets/text_widgets/body_large.dart
index 591517a..2e759ad 100644
--- a/lib/features/shared_widgets/text_widgets/body_large.dart
+++ b/lib/features/shared_widgets/text_widgets/body_large.dart
@@ -34,7 +34,7 @@ class BodyLarge extends StatelessWidget {
textAlign: textAlign,
style: style ??
context.bodyLarge.copyWith(
- height: height ?? 1.5,
+ height: height,
fontWeight: fontWeight,
color: fontColor,
fontSize: fontSize,
diff --git a/lib/generated/assets.dart b/lib/generated/assets.dart
index 98fa1fe..2a4bff4 100644
--- a/lib/generated/assets.dart
+++ b/lib/generated/assets.dart
@@ -2,7 +2,6 @@
class Assets {
Assets._();
- static const String assetsIconsHome = 'assets/icons/home.svg';
static const String fontsAftikaRegular = 'assets/fonts/AftikaRegular.ttf';
static const String iconsAC = 'assets/icons/AC.svg';
static const String iconsActive = 'assets/icons/active.svg';
@@ -20,18 +19,18 @@ class Assets {
static const String iconsFan3 = 'assets/icons/fan-3.svg';
static const String iconsFrequency = 'assets/icons/frequency.svg';
static const String iconsGateway = 'assets/icons/Gateway.svg';
- static const String iconsHome = 'assets/icons/home.jpg';
- static const String iconsHome2 = 'assets/icons/home-2.svg';
+ static const String iconsHome = 'assets/icons/home.svg';
static const String iconsHot1 = 'assets/icons/hot1.jpg';
static const String iconsLayout = 'assets/icons/Layout.svg';
static const String iconsLayoutFill = 'assets/icons/Layout-fill.svg';
static const String iconsLight = 'assets/icons/Light.svg';
+ static const String iconsLogo = 'assets/icons/logo.png';
static const String iconsMenu = 'assets/icons/Menu.svg';
static const String iconsMenuFill = 'assets/icons/Menu-fill.svg';
static const String iconsMinus = 'assets/icons/minus.svg';
static const String iconsPlus = 'assets/icons/plus.svg';
- static const String iconsRoutineFill = 'assets/icons/Routine-fill.svg';
static const String iconsRoutines = 'assets/icons/Routines.svg';
+ static const String iconsRoutinesFill = 'assets/icons/Routines-fill.svg';
static const String iconsScreen = 'assets/icons/Screen.svg';
static const String iconsSummer = 'assets/icons/Summer.svg';
static const String iconsSummerMode = 'assets/icons/summer_mode.svg';