initialized Routine Page

This commit is contained in:
Mohammad Salameh
2024-02-21 13:47:08 +03:00
parent cdfb778884
commit d5196fda45
33 changed files with 569 additions and 236 deletions

View File

@ -1,9 +1,17 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_76_112)">
<path d="M5.83333 0H3.33333C2.44928 0 1.60143 0.35119 0.976311 0.976311C0.35119 1.60143 0 2.44928 0 3.33333L0 5.83333C0 6.71739 0.35119 7.56524 0.976311 8.19036C1.60143 8.81548 2.44928 9.16667 3.33333 9.16667H5.83333C6.71739 9.16667 7.56524 8.81548 8.19036 8.19036C8.81548 7.56524 9.16667 6.71739 9.16667 5.83333V3.33333C9.16667 2.44928 8.81548 1.60143 8.19036 0.976311C7.56524 0.35119 6.71739 0 5.83333 0ZM7.5 5.83333C7.5 6.27536 7.32441 6.69928 7.01184 7.01184C6.69928 7.32441 6.27536 7.5 5.83333 7.5H3.33333C2.89131 7.5 2.46738 7.32441 2.15482 7.01184C1.84226 6.69928 1.66667 6.27536 1.66667 5.83333V3.33333C1.66667 2.89131 1.84226 2.46738 2.15482 2.15482C2.46738 1.84226 2.89131 1.66667 3.33333 1.66667H5.83333C6.27536 1.66667 6.69928 1.84226 7.01184 2.15482C7.32441 2.46738 7.5 2.89131 7.5 3.33333V5.83333Z" fill="#999999"/>
<path d="M5.83333 10.8333H3.33333C2.44928 10.8333 1.60143 11.1845 0.976311 11.8096C0.35119 12.4347 0 13.2826 0 14.1666L0 16.6666C0 17.5507 0.35119 18.3985 0.976311 19.0237C1.60143 19.6488 2.44928 20 3.33333 20H5.83333C6.71739 20 7.56524 19.6488 8.19036 19.0237C8.81548 18.3985 9.16667 17.5507 9.16667 16.6666V14.1666C9.16667 13.2826 8.81548 12.4347 8.19036 11.8096C7.56524 11.1845 6.71739 10.8333 5.83333 10.8333ZM7.5 16.6666C7.5 17.1087 7.32441 17.5326 7.01184 17.8452C6.69928 18.1577 6.27536 18.3333 5.83333 18.3333H3.33333C2.89131 18.3333 2.46738 18.1577 2.15482 17.8452C1.84226 17.5326 1.66667 17.1087 1.66667 16.6666V14.1666C1.66667 13.7246 1.84226 13.3007 2.15482 12.9881C2.46738 12.6756 2.89131 12.5 3.33333 12.5H5.83333C6.27536 12.5 6.69928 12.6756 7.01184 12.9881C7.32441 13.3007 7.5 13.7246 7.5 14.1666V16.6666Z" fill="#999999"/>
<path d="M16.6667 10.8333H14.1667C13.2827 10.8333 12.4348 11.1845 11.8097 11.8096C11.1846 12.4347 10.8334 13.2826 10.8334 14.1666V16.6666C10.8334 17.5507 11.1846 18.3985 11.8097 19.0237C12.4348 19.6488 13.2827 20 14.1667 20H16.6667C17.5508 20 18.3986 19.6488 19.0237 19.0237C19.6489 18.3985 20 17.5507 20 16.6666V14.1666C20 13.2826 19.6489 12.4347 19.0237 11.8096C18.3986 11.1845 17.5508 10.8333 16.6667 10.8333ZM18.3334 16.6666C18.3334 17.1087 18.1578 17.5326 17.8452 17.8452C17.5327 18.1577 17.1087 18.3333 16.6667 18.3333H14.1667C13.7247 18.3333 13.3008 18.1577 12.9882 17.8452C12.6756 17.5326 12.5 17.1087 12.5 16.6666V14.1666C12.5 13.7246 12.6756 13.3007 12.9882 12.9881C13.3008 12.6756 13.7247 12.5 14.1667 12.5H16.6667C17.1087 12.5 17.5327 12.6756 17.8452 12.9881C18.1578 13.3007 18.3334 13.7246 18.3334 14.1666V16.6666Z" fill="#999999"/>
<path d="M11.6667 5.83331H14.1667V8.33331C14.1667 8.55433 14.2545 8.76629 14.4108 8.92257C14.5671 9.07885 14.779 9.16665 15 9.16665C15.2211 9.16665 15.433 9.07885 15.5893 8.92257C15.7456 8.76629 15.8334 8.55433 15.8334 8.33331V5.83331H18.3334C18.5544 5.83331 18.7664 5.74552 18.9226 5.58924C19.0789 5.43296 19.1667 5.22099 19.1667 4.99998C19.1667 4.77897 19.0789 4.567 18.9226 4.41072C18.7664 4.25444 18.5544 4.16665 18.3334 4.16665H15.8334V1.66665C15.8334 1.44563 15.7456 1.23367 15.5893 1.07739C15.433 0.92111 15.2211 0.833313 15 0.833313C14.779 0.833313 14.5671 0.92111 14.4108 1.07739C14.2545 1.23367 14.1667 1.44563 14.1667 1.66665V4.16665H11.6667C11.4457 4.16665 11.2337 4.25444 11.0775 4.41072C10.9212 4.567 10.8334 4.77897 10.8334 4.99998C10.8334 5.22099 10.9212 5.43296 11.0775 5.58924C11.2337 5.74552 11.4457 5.83331 11.6667 5.83331Z" fill="#999999"/>
<path
d="M5.83333 0H3.33333C2.44928 0 1.60143 0.35119 0.976311 0.976311C0.35119 1.60143 0 2.44928 0 3.33333L0 5.83333C0 6.71739 0.35119 7.56524 0.976311 8.19036C1.60143 8.81548 2.44928 9.16667 3.33333 9.16667H5.83333C6.71739 9.16667 7.56524 8.81548 8.19036 8.19036C8.81548 7.56524 9.16667 6.71739 9.16667 5.83333V3.33333C9.16667 2.44928 8.81548 1.60143 8.19036 0.976311C7.56524 0.35119 6.71739 0 5.83333 0ZM7.5 5.83333C7.5 6.27536 7.32441 6.69928 7.01184 7.01184C6.69928 7.32441 6.27536 7.5 5.83333 7.5H3.33333C2.89131 7.5 2.46738 7.32441 2.15482 7.01184C1.84226 6.69928 1.66667 6.27536 1.66667 5.83333V3.33333C1.66667 2.89131 1.84226 2.46738 2.15482 2.15482C2.46738 1.84226 2.89131 1.66667 3.33333 1.66667H5.83333C6.27536 1.66667 6.69928 1.84226 7.01184 2.15482C7.32441 2.46738 7.5 2.89131 7.5 3.33333V5.83333Z"
fill="#999999" />
<path
d="M5.83333 10.8333H3.33333C2.44928 10.8333 1.60143 11.1845 0.976311 11.8096C0.35119 12.4347 0 13.2826 0 14.1666L0 16.6666C0 17.5507 0.35119 18.3985 0.976311 19.0237C1.60143 19.6488 2.44928 20 3.33333 20H5.83333C6.71739 20 7.56524 19.6488 8.19036 19.0237C8.81548 18.3985 9.16667 17.5507 9.16667 16.6666V14.1666C9.16667 13.2826 8.81548 12.4347 8.19036 11.8096C7.56524 11.1845 6.71739 10.8333 5.83333 10.8333ZM7.5 16.6666C7.5 17.1087 7.32441 17.5326 7.01184 17.8452C6.69928 18.1577 6.27536 18.3333 5.83333 18.3333H3.33333C2.89131 18.3333 2.46738 18.1577 2.15482 17.8452C1.84226 17.5326 1.66667 17.1087 1.66667 16.6666V14.1666C1.66667 13.7246 1.84226 13.3007 2.15482 12.9881C2.46738 12.6756 2.89131 12.5 3.33333 12.5H5.83333C6.27536 12.5 6.69928 12.6756 7.01184 12.9881C7.32441 13.3007 7.5 13.7246 7.5 14.1666V16.6666Z"
fill="#999999" />
<path
d="M16.6667 10.8333H14.1667C13.2827 10.8333 12.4348 11.1845 11.8097 11.8096C11.1846 12.4347 10.8334 13.2826 10.8334 14.1666V16.6666C10.8334 17.5507 11.1846 18.3985 11.8097 19.0237C12.4348 19.6488 13.2827 20 14.1667 20H16.6667C17.5508 20 18.3986 19.6488 19.0237 19.0237C19.6489 18.3985 20 17.5507 20 16.6666V14.1666C20 13.2826 19.6489 12.4347 19.0237 11.8096C18.3986 11.1845 17.5508 10.8333 16.6667 10.8333ZM18.3334 16.6666C18.3334 17.1087 18.1578 17.5326 17.8452 17.8452C17.5327 18.1577 17.1087 18.3333 16.6667 18.3333H14.1667C13.7247 18.3333 13.3008 18.1577 12.9882 17.8452C12.6756 17.5326 12.5 17.1087 12.5 16.6666V14.1666C12.5 13.7246 12.6756 13.3007 12.9882 12.9881C13.3008 12.6756 13.7247 12.5 14.1667 12.5H16.6667C17.1087 12.5 17.5327 12.6756 17.8452 12.9881C18.1578 13.3007 18.3334 13.7246 18.3334 14.1666V16.6666Z"
fill="#999999" />
<path
d="M11.6667 5.83331H14.1667V8.33331C14.1667 8.55433 14.2545 8.76629 14.4108 8.92257C14.5671 9.07885 14.779 9.16665 15 9.16665C15.2211 9.16665 15.433 9.07885 15.5893 8.92257C15.7456 8.76629 15.8334 8.55433 15.8334 8.33331V5.83331H18.3334C18.5544 5.83331 18.7664 5.74552 18.9226 5.58924C19.0789 5.43296 19.1667 5.22099 19.1667 4.99998C19.1667 4.77897 19.0789 4.567 18.9226 4.41072C18.7664 4.25444 18.5544 4.16665 18.3334 4.16665H15.8334V1.66665C15.8334 1.44563 15.7456 1.23367 15.5893 1.07739C15.433 0.92111 15.2211 0.833313 15 0.833313C14.779 0.833313 14.5671 0.92111 14.4108 1.07739C14.2545 1.23367 14.1667 1.44563 14.1667 1.66665V4.16665H11.6667C11.4457 4.16665 11.2337 4.25444 11.0775 4.41072C10.9212 4.567 10.8334 4.77897 10.8334 4.99998C10.8334 5.22099 10.9212 5.43296 11.0775 5.58924C11.2337 5.74552 11.4457 5.83331 11.6667 5.83331Z"
fill="#999999" />
</g>
<defs>
<clipPath id="clip0_76_112">

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
assets/icons/Hot 1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

@ -1,9 +1,17 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_76_67)">
<path d="M1.66667 9.16667H10.8333C11.2754 9.16667 11.6993 8.99107 12.0118 8.67851C12.3244 8.36595 12.5 7.94203 12.5 7.5V1.66667C12.5 1.22464 12.3244 0.800716 12.0118 0.488155C11.6993 0.175595 11.2754 0 10.8333 0L1.66667 0C1.22464 0 0.800716 0.175595 0.488155 0.488155C0.175595 0.800716 0 1.22464 0 1.66667L0 7.5C0 7.94203 0.175595 8.36595 0.488155 8.67851C0.800716 8.99107 1.22464 9.16667 1.66667 9.16667ZM1.66667 1.66667H10.8333V7.5H1.66667V1.66667Z" fill="#999999"/>
<path d="M18.3334 0H15.8334C15.3913 0 14.9674 0.175595 14.6548 0.488155C14.3423 0.800716 14.1667 1.22464 14.1667 1.66667V7.5C14.1667 7.94203 14.3423 8.36595 14.6548 8.67851C14.9674 8.99107 15.3913 9.16667 15.8334 9.16667H18.3334C18.7754 9.16667 19.1993 8.99107 19.5119 8.67851C19.8244 8.36595 20 7.94203 20 7.5V1.66667C20 1.22464 19.8244 0.800716 19.5119 0.488155C19.1993 0.175595 18.7754 0 18.3334 0ZM18.3334 7.5H15.8334V1.66667H18.3334V7.5Z" fill="#999999"/>
<path d="M4.16667 10.8333H1.66667C1.22464 10.8333 0.800716 11.0089 0.488155 11.3215C0.175595 11.634 0 12.058 0 12.5L0 18.3333C0 18.7753 0.175595 19.1993 0.488155 19.5118C0.800716 19.8244 1.22464 20 1.66667 20H4.16667C4.60869 20 5.03262 19.8244 5.34518 19.5118C5.65774 19.1993 5.83333 18.7753 5.83333 18.3333V12.5C5.83333 12.058 5.65774 11.634 5.34518 11.3215C5.03262 11.0089 4.60869 10.8333 4.16667 10.8333ZM4.16667 18.3333H1.66667V12.5H4.16667V18.3333Z" fill="#999999"/>
<path d="M18.3333 10.8333H9.16667C8.72464 10.8333 8.30072 11.0089 7.98816 11.3215C7.6756 11.634 7.5 12.058 7.5 12.5V18.3333C7.5 18.7753 7.6756 19.1993 7.98816 19.5118C8.30072 19.8244 8.72464 20 9.16667 20H18.3333C18.7754 20 19.1993 19.8244 19.5118 19.5118C19.8244 19.1993 20 18.7753 20 18.3333V12.5C20 12.058 19.8244 11.634 19.5118 11.3215C19.1993 11.0089 18.7754 10.8333 18.3333 10.8333ZM18.3333 18.3333H9.16667V12.5H18.3333V18.3333Z" fill="#999999"/>
<path
d="M1.66667 9.16667H10.8333C11.2754 9.16667 11.6993 8.99107 12.0118 8.67851C12.3244 8.36595 12.5 7.94203 12.5 7.5V1.66667C12.5 1.22464 12.3244 0.800716 12.0118 0.488155C11.6993 0.175595 11.2754 0 10.8333 0L1.66667 0C1.22464 0 0.800716 0.175595 0.488155 0.488155C0.175595 0.800716 0 1.22464 0 1.66667L0 7.5C0 7.94203 0.175595 8.36595 0.488155 8.67851C0.800716 8.99107 1.22464 9.16667 1.66667 9.16667ZM1.66667 1.66667H10.8333V7.5H1.66667V1.66667Z"
fill="#999999" />
<path
d="M18.3334 0H15.8334C15.3913 0 14.9674 0.175595 14.6548 0.488155C14.3423 0.800716 14.1667 1.22464 14.1667 1.66667V7.5C14.1667 7.94203 14.3423 8.36595 14.6548 8.67851C14.9674 8.99107 15.3913 9.16667 15.8334 9.16667H18.3334C18.7754 9.16667 19.1993 8.99107 19.5119 8.67851C19.8244 8.36595 20 7.94203 20 7.5V1.66667C20 1.22464 19.8244 0.800716 19.5119 0.488155C19.1993 0.175595 18.7754 0 18.3334 0ZM18.3334 7.5H15.8334V1.66667H18.3334V7.5Z"
fill="#999999" />
<path
d="M4.16667 10.8333H1.66667C1.22464 10.8333 0.800716 11.0089 0.488155 11.3215C0.175595 11.634 0 12.058 0 12.5L0 18.3333C0 18.7753 0.175595 19.1993 0.488155 19.5118C0.800716 19.8244 1.22464 20 1.66667 20H4.16667C4.60869 20 5.03262 19.8244 5.34518 19.5118C5.65774 19.1993 5.83333 18.7753 5.83333 18.3333V12.5C5.83333 12.058 5.65774 11.634 5.34518 11.3215C5.03262 11.0089 4.60869 10.8333 4.16667 10.8333ZM4.16667 18.3333H1.66667V12.5H4.16667V18.3333Z"
fill="#999999" />
<path
d="M18.3333 10.8333H9.16667C8.72464 10.8333 8.30072 11.0089 7.98816 11.3215C7.6756 11.634 7.5 12.058 7.5 12.5V18.3333C7.5 18.7753 7.6756 19.1993 7.98816 19.5118C8.30072 19.8244 8.72464 20 9.16667 20H18.3333C18.7754 20 19.1993 19.8244 19.5118 19.5118C19.8244 19.1993 20 18.7753 20 18.3333V12.5C20 12.058 19.8244 11.634 19.5118 11.3215C19.1993 11.0089 18.7754 10.8333 18.3333 10.8333ZM18.3333 18.3333H9.16667V12.5H18.3333V18.3333Z"
fill="#999999" />
</g>
<defs>
<clipPath id="clip0_76_67">

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
assets/icons/Winter 1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 -960 960 960" width="24"><path d="M240-200h120v-240h240v240h120v-360L480-740 240-560v360Zm-80 80v-480l320-240 320 240v480H520v-240h-80v240H160Zm320-350Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="48px" height="48px"><path d="M 23.951172 4 A 1.50015 1.50015 0 0 0 23.072266 4.3222656 L 8.859375 15.519531 C 7.0554772 16.941163 6 19.113506 6 21.410156 L 6 40.5 C 6 41.863594 7.1364058 43 8.5 43 L 18.5 43 C 19.863594 43 21 41.863594 21 40.5 L 21 30.5 C 21 30.204955 21.204955 30 21.5 30 L 26.5 30 C 26.795045 30 27 30.204955 27 30.5 L 27 40.5 C 27 41.863594 28.136406 43 29.5 43 L 39.5 43 C 40.863594 43 42 41.863594 42 40.5 L 42 21.410156 C 42 19.113506 40.944523 16.941163 39.140625 15.519531 L 24.927734 4.3222656 A 1.50015 1.50015 0 0 0 23.951172 4 z M 24 7.4101562 L 37.285156 17.876953 C 38.369258 18.731322 39 20.030807 39 21.410156 L 39 40 L 30 40 L 30 30.5 C 30 28.585045 28.414955 27 26.5 27 L 21.5 27 C 19.585045 27 18 28.585045 18 30.5 L 18 40 L 9 40 L 9 21.410156 C 9 20.030807 9.6307412 18.731322 10.714844 17.876953 L 24 7.4101562 z"/></svg>

Before

Width:  |  Height:  |  Size: 224 B

After

Width:  |  Height:  |  Size: 926 B

BIN
assets/icons/home.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 28 KiB

View File

@ -1,14 +1,14 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/navigation/bloc/nav_cubit.dart';
import 'package:syncrow_app/features/navigation/view/widgets/app_body.dart';
import 'package:syncrow_app/features/navigation/view/widgets/default_app_bar.dart';
import 'package:syncrow_app/features/navigation/view/widgets/default_nav_bar.dart';
import 'package:syncrow_app/features/app_layout/bloc/nav_cubit.dart';
import 'package:syncrow_app/features/app_layout/view/widgets/app_body.dart';
import 'package:syncrow_app/features/app_layout/view/widgets/default_app_bar.dart';
import 'package:syncrow_app/features/app_layout/view/widgets/default_nav_bar.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
class NavigationView extends StatelessWidget {
const NavigationView({super.key});
class AppLayout extends StatelessWidget {
const AppLayout({super.key});
@override
Widget build(BuildContext context) {

View File

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:gap/gap.dart';
import 'package:syncrow_app/utils/resource_manager/assets_manager.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
import '../../../shared_widgets/text_widgets/body_large.dart';
@ -22,8 +23,12 @@ class AppBarHomeDropdown extends StatelessWidget {
children: <Widget>[
SvgPicture.asset(
IconsManager.home,
width: 30,
height: 30,
width: 25,
height: 25,
colorFilter: const ColorFilter.mode(
ColorsManager.textPrimaryColor,
BlendMode.srcIn,
),
),
const Gap(5),
const BodyLarge(text: 'Home'),

View File

@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/navigation/bloc/nav_cubit.dart';
import 'package:syncrow_app/features/app_layout/bloc/nav_cubit.dart';
import 'package:syncrow_app/utils/resource_manager/assets_manager.dart';
class AppBody extends StatelessWidget {
@ -24,7 +24,11 @@ class AppBody extends StatelessWidget {
opacity: 0.4,
),
),
child: Padding(
padding: const EdgeInsets.only(
top: 60, right: 15, left: 15, bottom: 100),
child: NavCubit.of(context).currentPage,
),
);
},
);

View File

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/navigation/bloc/nav_cubit.dart';
import 'package:syncrow_app/features/navigation/view/widgets/app_bar_home_dropdown.dart';
import 'package:syncrow_app/features/app_layout/bloc/nav_cubit.dart';
import 'package:syncrow_app/features/app_layout/view/widgets/app_bar_home_dropdown.dart';
class DefaultAppBar extends StatelessWidget implements PreferredSizeWidget {
const DefaultAppBar({super.key});

View File

@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/navigation/bloc/nav_cubit.dart';
import 'package:syncrow_app/features/app_layout/bloc/nav_cubit.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
class DefaultNavBar extends StatelessWidget {

View File

@ -1,21 +1,19 @@
import 'package:flutter/material.dart';
import 'package:gap/gap.dart';
import 'package:syncrow_app/features/dashboard/view/carbon_emission.dart';
import 'package:syncrow_app/features/dashboard/view/consumption.dart';
import 'package:syncrow_app/features/dashboard/view/live_monitor_tab.dart';
import 'package:syncrow_app/features/dashboard/view/widgets/carbon_emission.dart';
import 'package:syncrow_app/features/dashboard/view/widgets/consumption.dart';
import 'package:syncrow_app/features/dashboard/view/widgets/live_monitor_tab.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/title_medium.dart';
import 'package:syncrow_app/utils/resource_manager/strings_manager.dart';
import 'energy_usage.dart';
import 'widgets/energy_usage.dart';
class DashboardView extends StatelessWidget {
const DashboardView({super.key});
@override
Widget build(BuildContext context) {
return const Padding(
padding: EdgeInsets.only(top: 60, right: 15, left: 15, bottom: 100),
child: Column(
return const Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
@ -43,7 +41,6 @@ class DashboardView extends StatelessWidget {
),
),
],
),
);
}
}

View File

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:gap/gap.dart';
import 'package:syncrow_app/features/dashboard/view/card_title.dart';
import 'package:syncrow_app/features/dashboard/view/widgets/card_title.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_small.dart';
import 'package:syncrow_app/features/shared_widgets/united_text.dart';
import 'package:syncrow_app/utils/resource_manager/assets_manager.dart';

View File

@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:gap/gap.dart';
import 'package:syncrow_app/features/dashboard/view/card_title.dart';
import 'package:syncrow_app/features/dashboard/view/widgets/card_title.dart';
import 'package:syncrow_app/features/shared_widgets/united_text.dart';
import 'package:syncrow_app/utils/resource_manager/assets_manager.dart';
import 'package:syncrow_app/utils/resource_manager/strings_manager.dart';

View File

@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:syncrow_app/features/dashboard/view/energy_usage_header.dart';
import 'package:syncrow_app/features/dashboard/view/widgets/energy_usage_header.dart';
import 'package:syncrow_app/utils/resource_manager/assets_manager.dart';
class EnergyUsage extends StatelessWidget {

View File

@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:syncrow_app/features/dashboard/view/card_title.dart';
import 'package:syncrow_app/features/dashboard/view/widgets/card_title.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_small.dart';
import 'package:syncrow_app/features/shared_widgets/united_text.dart';
import 'package:syncrow_app/utils/resource_manager/strings_manager.dart';

View File

@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:syncrow_app/features/dashboard/view/live_monitor_widget.dart';
import 'package:syncrow_app/features/dashboard/view/widgets/live_monitor_widget.dart';
import 'package:syncrow_app/utils/resource_manager/assets_manager.dart';
import 'package:syncrow_app/utils/resource_manager/strings_manager.dart';

View File

@ -18,5 +18,5 @@ class SceneCubit extends Cubit<SceneState> {
});
}
var scenes = <SceneModel>[];
List<SceneModel> scenes = [];
}

View File

@ -1,7 +1,13 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:gap/gap.dart';
import 'package:syncrow_app/features/scene/bloc/scene_cubit.dart';
import 'package:syncrow_app/features/scene/view/widgets/scene_view_no_scenes.dart';
import 'package:syncrow_app/features/shared_widgets/default_container.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_medium.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_small.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/title_medium.dart';
import 'package:syncrow_app/utils/resource_manager/assets_manager.dart';
import 'package:syncrow_app/utils/resource_manager/strings_manager.dart';
class SceneView extends StatelessWidget {
const SceneView({super.key});
@ -12,9 +18,99 @@ class SceneView extends StatelessWidget {
create: (BuildContext context) => SceneCubit(),
child: BlocBuilder<SceneCubit, SceneState>(
builder: (context, state) {
return state is SceneLoading
? const Center(child: CircularProgressIndicator())
: const SceneViewNoScenes();
return Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
const TitleMedium(
text: StringsManager.routine,
style: TextStyle(
fontSize: 32,
fontWeight: FontWeight.bold,
),
),
const Gap(20),
const BodySmall(
text: StringsManager.tapToRunRoutine,
),
Row(
children: [
Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 10,
),
child: DefaultContainer(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Image.asset(
height: 50,
width: 50,
IconsManager.summerMode,
fit: BoxFit.contain,
),
const Icon(
Icons.play_circle,
size: 40,
color: Colors.grey,
)
],
),
const BodyMedium(
text: StringsManager.summerMode,
fontWeight: FontWeight.bold,
fontSize: 16,
)
],
),
),
),
),
const Gap(10),
Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(
vertical: 10,
),
child: DefaultContainer(
child: Column(
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Image.asset(
height: 50,
width: 50,
IconsManager.winterMode,
fit: BoxFit.contain,
),
const Icon(
Icons.play_circle,
size: 40,
color: Colors.grey,
)
],
),
const BodyMedium(
text: StringsManager.winterMode,
fontWeight: FontWeight.bold,
fontSize: 16,
)
],
),
),
),
),
],
)
],
);
},
),
);

View File

@ -10,6 +10,9 @@ class BodyMedium extends StatelessWidget {
this.maxLines,
this.overflow,
this.textAlign,
this.fontSize,
this.fontColor,
this.fontWeight,
});
final String text;
@ -18,11 +21,17 @@ class BodyMedium extends StatelessWidget {
final TextOverflow? overflow;
final TextAlign? textAlign;
final double? fontSize;
final Color? fontColor;
final FontWeight? fontWeight;
@override
Widget build(BuildContext context) => CustomText(
text,
style: style ?? context.bodyMedium,
style: style ??
context.bodyMedium.copyWith(
fontSize: fontSize, color: fontColor, fontWeight: fontWeight),
// softWrap: true,
maxLines: maxLines,
// overflow: overflow,

View File

@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/auth/bloc/auth_cubit.dart';
import 'package:syncrow_app/features/navigation/bloc/nav_cubit.dart';
import 'package:syncrow_app/features/app_layout/bloc/nav_cubit.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
import 'package:syncrow_app/utils/resource_manager/theme_manager.dart';
@ -31,7 +31,7 @@ class MyApp extends StatelessWidget {
onGenerateRoute: router.Router.generateRoute,
initialRoute: Routes.splash,
themeMode: ThemeMode.system,
theme: myTheme,
theme: ThemeManager.selectTheme(),
supportedLocales: const [
Locale('en', ''), // English, no country code
Locale('ar', ''), // Arabic, no country code

View File

@ -3,7 +3,7 @@ import 'package:syncrow_app/features/auth/view/auth_view.dart';
import 'package:syncrow_app/features/dashboard/view/dashboard_view.dart';
import 'package:syncrow_app/features/devices/view/devices_view.dart';
import 'package:syncrow_app/features/layout/view/layout_view.dart';
import 'package:syncrow_app/features/navigation/view/navigation_view.dart';
import 'package:syncrow_app/features/app_layout/view/app_layout.dart';
import 'package:syncrow_app/features/profile/view/profile_view.dart';
import 'package:syncrow_app/features/scene/view/scene_view.dart';
import 'package:syncrow_app/features/splash/view/splash_view.dart';
@ -43,7 +43,7 @@ class Router {
case Routes.homeRoute:
return MaterialPageRoute(
builder: (_) => const NavigationView(), settings: settings);
builder: (_) => const AppLayout(), settings: settings);
default:
return MaterialPageRoute(

View File

@ -41,9 +41,7 @@ abstract class IconsManager {
static const String doorLock = '$base/Door Lock.svg';
static const String gateway = '$base/Gateway.svg';
static const String light = '$base/Light.svg';
static const String summerMode = '$base/Hot 1.jpg';
static const String winterMode = '$base/Winter 1.jpg';
static const String screen = '$base/Screen.svg';
}
abstract class VideosManager {
// static const String registrationVideo = 'assets/videos/video.mp4';
}

View File

@ -2,8 +2,10 @@ import 'package:flutter/material.dart';
abstract class ColorsManager {
static const Color textPrimaryColor = Color(0xFF5D5D5D);
static const Color primaryColor = Color(0xFF023dfe);
static const Color secondaryColor = Colors.white;
static const Color primaryColor = Color(0xFF0030CB);
static const Color onPrimaryColor = Colors.white;
static const Color secondaryColor = Color(0xFF023DFE);
static const Color onSecondaryColor = Color(0xFF023DFE);
static const Color primaryTextColor = Colors.black;
static const Color greyColor = Color(0xFFd9d9d9);

View File

@ -6,6 +6,8 @@ class StringsManager {
static const dashboard = 'Dashboard';
static const devices = 'Devices';
static const routine = 'Routines';
static const tapToRunRoutine = 'Tap to run routine';
static const wizard = 'Wizard';
static const active = 'Active';
static const current = 'Current';
@ -17,5 +19,7 @@ class StringsManager {
static const emissions = 'Emissions';
static const reductions = 'Reductions';
static const winter = 'Winter';
static const winterMode = 'Winter Mode';
static const summer = 'Summer';
static const summerMode = 'Summer Mode';
}

View File

@ -3,10 +3,26 @@ import 'package:flutter/material.dart';
import 'color_manager.dart';
import 'font_manager.dart';
ThemeData myTheme = ThemeData(
abstract class ThemeManager {
static bool isDarkTheme = false;
static ThemeData selectTheme() => isDarkTheme ? darkTheme : lightTheme;
static ThemeData lightTheme = ThemeData(
///main colors
primaryColor: ColorsManager.primaryColor,
// colorScheme: ColorsManager.lightColorScheme,
colorScheme: const ColorScheme(
background: ColorsManager.backgroundColor,
brightness: Brightness.light,
primary: ColorsManager.primaryColor,
onPrimary: ColorsManager.onPrimaryColor,
secondary: ColorsManager.secondaryColor,
onSecondary: ColorsManager.onSecondaryColor,
error: Colors.red,
onError: Colors.white,
onBackground: ColorsManager.textPrimaryColor,
surface: Colors.white,
onSurface: ColorsManager.textPrimaryColor,
),
scaffoldBackgroundColor: Colors.white,
///text theme
@ -150,7 +166,173 @@ ThemeData myTheme = ThemeData(
cardTheme: const CardTheme(
elevation: 0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(8)),
borderRadius: BorderRadius.all(Radius.circular(20)),
),
),
);
//TODO implement dark theme
static ThemeData darkTheme = ThemeData(
///main colors
primaryColor: ColorsManager.primaryColor,
colorScheme: const ColorScheme(
background: ColorsManager.backgroundColor,
brightness: Brightness.light,
primary: ColorsManager.primaryColor,
onPrimary: ColorsManager.onPrimaryColor,
secondary: ColorsManager.secondaryColor,
onSecondary: ColorsManager.onSecondaryColor,
error: Colors.red,
onError: Colors.white,
onBackground: ColorsManager.textPrimaryColor,
surface: Colors.white,
onSurface: ColorsManager.textPrimaryColor,
),
scaffoldBackgroundColor: Colors.white,
///text theme
textTheme: const TextTheme(
///display
displayLarge: TextStyle(
fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s35,
fontWeight: FontsManager.regular,
color: ColorsManager.textPrimaryColor,
),
displayMedium: TextStyle(
fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s20,
fontWeight: FontsManager.regular,
color: ColorsManager.textPrimaryColor,
),
displaySmall: TextStyle(
fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s16,
fontWeight: FontsManager.regular,
color: ColorsManager.textPrimaryColor,
),
///title
titleLarge: TextStyle(
fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s48,
fontWeight: FontsManager.regular,
color: ColorsManager.textPrimaryColor,
),
titleMedium: TextStyle(
fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s30,
fontWeight: FontsManager.bold,
color: ColorsManager.textPrimaryColor,
),
titleSmall: TextStyle(
fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s25,
fontWeight: FontsManager.regular,
color: ColorsManager.textPrimaryColor,
),
///body
bodyLarge: TextStyle(
fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s18,
fontWeight: FontsManager.regular,
color: ColorsManager.textPrimaryColor,
),
bodyMedium: TextStyle(
fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s14,
fontWeight: FontsManager.regular,
color: ColorsManager.textPrimaryColor,
),
bodySmall: TextStyle(
fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s12,
fontWeight: FontsManager.regular,
color: ColorsManager.textPrimaryColor,
),
labelLarge: TextStyle(
fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s18,
fontWeight: FontsManager.regular,
color: ColorsManager.textPrimaryColor,
),
labelMedium: TextStyle(
fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s16,
fontWeight: FontsManager.regular,
color: ColorsManager.textPrimaryColor,
),
labelSmall: TextStyle(
fontFamily: FontsManager.fontFamily,
fontSize: FontSize.s14,
fontWeight: FontsManager.regular,
color: ColorsManager.textPrimaryColor,
),
),
///button theme
// buttonTheme: ButtonThemeData(
// buttonColor: ColorsManager.primaryLightColor,
// padding: const EdgeInsets.symmetric(horizontal: AppPadding.p8),
// textTheme: ButtonTextTheme.primary,
// hoverColor: ColorsManager.primaryDarkColor,
// shape: RoundedRectangleBorder(
// borderRadius: BorderRadius.circular(AppRadius.r4),
// ),),
//
// textButtonTheme: TextButtonThemeData(
// style: ButtonStyle(
// backgroundColor:
// MaterialStateProperty.all<Color>(ColorsManager.primaryLightColor),
// padding: MaterialStateProperty.all<EdgeInsets>(
// const EdgeInsets.all(AppPadding.p8),),
// textStyle: MaterialStateProperty.all<TextStyle>(
// const TextStyle(
// fontFamily: FontsManager.fontFamily,
// fontSize: FontSize.s16,
// fontWeight: FontsManager.regular,
// color: ColorsManager.onPrimaryLightColor,
// ),
// ),
// // shape: MaterialStateProperty.all<OutlinedBorder>(
// // RoundedRectangleBorder(
// // borderRadius: BorderRadius.circular(AppRadius.r4),
// // side: const BorderSide(color: Colors.grey),
// // ),
// // ),
// ),
// ),
///input decoration theme
inputDecorationTheme: const InputDecorationTheme(
border: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(8)),
),
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey),
borderRadius: BorderRadius.all(Radius.circular(8)),
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: ColorsManager.primaryColor),
borderRadius: BorderRadius.all(Radius.circular(8)),
),
labelStyle: TextStyle(
fontFamily: FontsManager.fontFamily,
color: Colors.grey,
fontSize: FontSize.s16,
fontWeight: FontsManager.regular,
),
),
///card theme
//TODO edit card theme
cardTheme: const CardTheme(
elevation: 0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(20)),
),
),
);
}