mirror of
https://github.com/SyncrowIOT/syncrow-app.git
synced 2025-11-27 06:54:54 +00:00
water leak
This commit is contained in:
32
assets/icons/detected_water_leak.svg
Normal file
32
assets/icons/detected_water_leak.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 13 KiB |
27
assets/icons/normal_water_leak.svg
Normal file
27
assets/icons/normal_water_leak.svg
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
<svg width="290" height="290" viewBox="0 0 290 290" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g filter="url(#filter0_d_4096_940)">
|
||||||
|
<rect x="20" y="20" width="250" height="250" rx="100" fill="#EDEDED"/>
|
||||||
|
<path d="M188.067 144.007C188.067 169.96 167.01 191 141.034 191C115.058 191 94 169.96 94 144.007C94 121.065 130.751 80.7942 139.281 71.7567C140.233 70.7478 141.835 70.7478 142.787 71.7567C151.317 80.7945 188.067 121.065 188.067 144.007Z" fill="#B3DAFE"/>
|
||||||
|
<path d="M142.787 71.7567C141.835 70.7478 140.233 70.7478 139.281 71.7567C138.759 72.3096 138.13 72.9809 137.412 73.7562C148.433 85.6575 180.824 122.468 180.824 144.006C180.824 168.743 161.696 189.015 137.412 190.862C138.607 190.953 139.815 191 141.034 191C167.01 191 188.068 169.96 188.068 144.006C188.068 121.065 151.317 80.7945 142.787 71.7567Z" fill="#8AC9FE"/>
|
||||||
|
<path d="M187.944 147.412C174.836 141.859 160.63 142.943 123.956 150.612C115.699 152.338 106.251 154.41 95.7856 156.876C101.386 176.573 119.524 191 141.034 191C165.864 191 186.197 171.776 187.944 147.412Z" fill="#60B7FF"/>
|
||||||
|
<path d="M171.214 128.586C184.882 128.586 195.962 117.506 195.962 103.837C195.962 90.1692 184.882 79.0889 171.214 79.0889C157.545 79.0889 146.465 90.1692 146.465 103.837C146.465 117.506 157.545 128.586 171.214 128.586Z" fill="#97D729"/>
|
||||||
|
<path d="M171.312 79.057C170.081 79.057 168.872 79.1482 167.69 79.3219C179.626 81.0743 188.79 91.356 188.79 103.779C188.79 116.202 179.626 126.484 167.69 128.236C168.872 128.41 170.081 128.501 171.312 128.501C184.965 128.501 196.034 117.433 196.034 103.779C196.034 90.1253 184.965 79.057 171.312 79.057Z" fill="#8BC727"/>
|
||||||
|
<path d="M168.515 114.479C167.115 114.479 165.798 113.933 164.808 112.943L157.249 105.383C155.713 103.848 155.713 101.359 157.249 99.8238C158.784 98.2886 161.273 98.2881 162.808 99.8238L168.515 105.531L179.816 94.2307C181.351 92.6955 183.84 92.6955 185.375 94.2307C186.911 95.7658 186.911 98.2551 185.375 99.79L172.222 112.943C171.232 113.934 169.915 114.479 168.515 114.479Z" fill="#F9F7F8"/>
|
||||||
|
<path d="M187.944 147.39C185.707 146.442 183.227 145.694 180.811 145.145C180.706 149.723 179.999 154.036 178.64 158.186L184.447 162.112C185.371 159.949 186.219 157.298 186.921 154.209C187.492 151.698 187.795 149.396 187.944 147.39Z" fill="#26A6FE"/>
|
||||||
|
<path d="M158.594 154.258C134.004 150.208 121.183 134.478 95.1665 136.178C94.4172 138.944 94 141.573 94 144.007C94 169.96 115.058 191 141.034 191C163.857 191 182.881 174.757 187.163 153.21C175.527 155.808 166.006 155.478 158.594 154.258Z" fill="#0593FC"/>
|
||||||
|
<path d="M179.633 154.541C175.105 174.288 158.13 189.291 137.395 190.861C138.596 190.953 139.809 191 141.034 191C163.857 191 182.881 174.757 187.163 153.21C184.546 153.794 182.036 154.229 179.633 154.541Z" fill="#0182FC"/>
|
||||||
|
<path d="M119.354 205.825H122.193V219H119.495L113.571 210.809V219H110.732V205.825H113.431L119.354 214.034V205.825ZM133.602 217.646C132.57 218.684 131.27 219.202 129.699 219.202C128.129 219.202 126.828 218.684 125.797 217.646C124.766 216.604 124.25 215.347 124.25 213.876C124.25 212.405 124.766 211.154 125.797 210.123C126.822 209.098 128.123 208.585 129.699 208.585C131.275 208.585 132.576 209.098 133.602 210.123C134.633 211.154 135.148 212.405 135.148 213.876C135.148 215.347 134.633 216.604 133.602 217.646ZM129.69 211.046V211.055C128.876 211.055 128.223 211.321 127.73 211.854C127.238 212.388 126.992 213.067 126.992 213.894C126.992 214.708 127.238 215.388 127.73 215.933C128.223 216.478 128.876 216.75 129.69 216.75C130.517 216.75 131.176 216.48 131.668 215.941C132.16 215.402 132.406 214.72 132.406 213.894C132.406 213.067 132.16 212.385 131.668 211.846C131.176 211.312 130.517 211.046 129.69 211.046ZM139.815 210.844V210.835C140.694 209.394 141.948 208.673 143.577 208.673V211.573H143.252C142.262 211.573 141.441 211.846 140.791 212.391C140.141 212.936 139.815 213.832 139.815 215.08V219H137.073V208.796H139.815V210.844ZM158.141 208.611H158.149C159.251 208.611 160.136 208.995 160.804 209.763C161.472 210.524 161.806 211.559 161.806 212.865V219H159.072V213.226C159.072 212.563 158.888 212.039 158.519 211.652C158.149 211.266 157.66 211.072 157.051 211.072C156.465 211.072 155.964 211.292 155.548 211.731C155.138 212.165 154.933 212.728 154.933 213.419V219H152.199V213.261C152.199 212.581 152.015 212.048 151.646 211.661C151.276 211.274 150.799 211.081 150.213 211.081C149.604 211.081 149.094 211.327 148.684 211.819C148.273 212.306 148.068 212.851 148.068 213.454V219H145.326V208.796H148.068V210.237C149.053 209.159 150.131 208.614 151.303 208.603C151.994 208.603 152.609 208.77 153.148 209.104C153.688 209.438 154.115 209.903 154.432 210.501C155.539 209.241 156.775 208.611 158.141 208.611ZM170.621 219L170.604 217.84C169.959 218.742 168.913 219.19 167.466 219.185C166.294 219.185 165.359 218.909 164.662 218.358C163.959 217.802 163.607 217.017 163.607 216.003C163.607 214.972 164.023 214.166 164.855 213.586C165.688 213.006 166.663 212.716 167.782 212.716C168.702 212.716 169.616 212.848 170.524 213.111C170.56 211.635 169.798 210.896 168.239 210.896C167.618 210.896 166.982 210.976 166.332 211.134C165.682 211.292 165.172 211.459 164.803 211.635L164.135 209.64C165.594 208.942 167.094 208.594 168.635 208.594C170.217 208.594 171.386 208.98 172.142 209.754C172.897 210.527 173.275 211.702 173.275 213.278V219H170.621ZM168.248 217.225L168.239 217.233C168.884 217.233 169.429 217.078 169.874 216.768C170.313 216.463 170.533 216.018 170.533 215.432V214.755C169.889 214.526 169.203 214.412 168.477 214.412C167.867 214.412 167.357 214.535 166.947 214.781C166.537 215.027 166.332 215.37 166.332 215.81C166.332 216.243 166.514 216.589 166.877 216.847C167.234 217.099 167.691 217.225 168.248 217.225ZM175.657 219V205.034H178.399V219H175.657Z" fill="#0593FC"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<filter id="filter0_d_4096_940" x="0" y="0" width="290" height="290" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
|
||||||
|
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
|
||||||
|
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
|
||||||
|
<feOffset/>
|
||||||
|
<feGaussianBlur stdDeviation="10"/>
|
||||||
|
<feComposite in2="hardAlpha" operator="out"/>
|
||||||
|
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.35 0"/>
|
||||||
|
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_4096_940"/>
|
||||||
|
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_4096_940" result="shape"/>
|
||||||
|
</filter>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 6.2 KiB |
8
assets/icons/waterleak_icon.svg
Normal file
8
assets/icons/waterleak_icon.svg
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<svg width="32" height="40" viewBox="0 0 32 40" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M31.3558 24.3356C31.3558 32.9868 24.3366 40 15.6779 40C7.01928 40 0 32.9868 0 24.3356C0 16.6883 12.2504 3.26474 15.0936 0.252246C15.411 -0.0840819 15.945 -0.0840819 16.2623 0.252246C19.1055 3.26482 31.3558 16.6883 31.3558 24.3356Z" fill="#B3DAFE"/>
|
||||||
|
<path d="M16.2623 0.252246C15.9449 -0.0840819 15.4109 -0.0840819 15.0936 0.252246C14.9197 0.436542 14.7101 0.660292 14.4707 0.918729C18.1444 4.88583 28.9414 17.156 28.9414 24.3355C28.9414 32.5809 22.5653 39.3383 14.4707 39.9541C14.8691 39.9845 15.2717 39.9999 15.678 39.9999C24.3366 39.9999 31.3559 32.9867 31.3559 24.3355C31.3559 16.6883 19.1055 3.26482 16.2623 0.252246Z" fill="#8AC9FE"/>
|
||||||
|
<path d="M31.3146 25.4707C26.9452 23.6196 22.2099 23.9811 9.98543 26.5371C7.23286 27.1127 4.08365 27.8032 0.595215 28.6251C2.46216 35.191 8.50794 39.9999 15.678 39.9999C23.9546 39.9999 30.7324 33.5919 31.3146 25.4707Z" fill="#60B7FF"/>
|
||||||
|
<path d="M31.3146 25.4633C30.5689 25.1473 29.7422 24.8981 28.9369 24.7148C28.902 26.2409 28.6664 27.6787 28.2134 29.0619L30.1492 30.3706C30.4571 29.6496 30.7395 28.766 30.9738 27.7362C31.164 26.8995 31.2649 26.132 31.3146 25.4633Z" fill="#26A6FE"/>
|
||||||
|
<path d="M21.5314 27.7526C13.3347 26.4026 9.06084 21.1593 0.388828 21.7261C0.139062 22.6479 0 23.5245 0 24.3356C0 32.9868 7.01921 40 15.6779 40C23.2857 40 29.6271 34.5856 31.0545 27.4032C27.1755 28.2694 24.002 28.1595 21.5314 27.7526Z" fill="#0593FC"/>
|
||||||
|
<path d="M28.5442 27.8469C27.0352 34.4294 21.3767 39.4302 14.465 39.9537C14.8653 39.9844 15.2698 40 15.6779 40C23.2857 40 29.627 34.5855 31.0545 27.4032C30.182 27.598 29.3454 27.7431 28.5442 27.8469Z" fill="#0182FC"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.7 KiB |
182
lib/features/devices/bloc/water_leak_bloc/water_leak_bloc.dart
Normal file
182
lib/features/devices/bloc/water_leak_bloc/water_leak_bloc.dart
Normal file
@ -0,0 +1,182 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
|
||||||
|
import 'package:dio/dio.dart';
|
||||||
|
import 'package:firebase_database/firebase_database.dart';
|
||||||
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
import 'package:syncrow_app/features/devices/bloc/water_leak_bloc/water_leak_event.dart';
|
||||||
|
import 'package:syncrow_app/features/devices/bloc/water_leak_bloc/water_leak_state.dart';
|
||||||
|
|
||||||
|
import 'package:syncrow_app/features/devices/model/device_control_model.dart';
|
||||||
|
import 'package:syncrow_app/features/devices/model/device_report_model.dart';
|
||||||
|
import 'package:syncrow_app/features/devices/model/status_model.dart';
|
||||||
|
import 'package:syncrow_app/features/devices/model/water_leak_model.dart';
|
||||||
|
import 'package:syncrow_app/services/api/devices_api.dart';
|
||||||
|
|
||||||
|
class WaterLeakBloc extends Bloc<WaterLeakEvent, WaterLeakState> {
|
||||||
|
final String WLId;
|
||||||
|
WaterLeakBloc({
|
||||||
|
required this.WLId,
|
||||||
|
}) : super(const WaterLeakState()) {
|
||||||
|
on<WaterLeakInitial>(_fetchStatus);
|
||||||
|
on<ReportLogsInitial>(fetchLogsForLastMonth);
|
||||||
|
on<ToggleLowBatteryEvent>(_toggleLowBattery);
|
||||||
|
on<ToggleClosingReminderEvent>(_toggleClosingReminder);
|
||||||
|
on<ToggleWaterLeakAlarmEvent>(_toggleWaterLeakAlarm);
|
||||||
|
}
|
||||||
|
Timer? _timer;
|
||||||
|
bool lowBattery = false;
|
||||||
|
bool closingReminder = false;
|
||||||
|
bool waterAlarm = false;
|
||||||
|
WaterLeakModel deviceStatus =
|
||||||
|
WaterLeakModel(waterContactState: false, batteryPercentage: 0);
|
||||||
|
|
||||||
|
void _fetchStatus(
|
||||||
|
WaterLeakInitial event, Emitter<WaterLeakState> emit) async {
|
||||||
|
emit(WaterLeakLoadingState());
|
||||||
|
try {
|
||||||
|
var response = await DevicesAPI.getDeviceStatus(WLId);
|
||||||
|
List<StatusModel> statusModelList = [];
|
||||||
|
for (var status in response['status']) {
|
||||||
|
statusModelList.add(StatusModel.fromJson(status));
|
||||||
|
}
|
||||||
|
deviceStatus = WaterLeakModel.fromJson(
|
||||||
|
statusModelList,
|
||||||
|
);
|
||||||
|
emit(UpdateState(waterSensor: deviceStatus));
|
||||||
|
Future.delayed(const Duration(milliseconds: 500));
|
||||||
|
_listenToChanges();
|
||||||
|
} catch (e) {
|
||||||
|
emit(WaterLeakFailedState(errorMessage: e.toString()));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Toggle functions for each switch
|
||||||
|
void _toggleLowBattery(
|
||||||
|
ToggleLowBatteryEvent event, Emitter<WaterLeakState> emit) async {
|
||||||
|
emit(LoadingNewSate(waterSensor: deviceStatus));
|
||||||
|
try {
|
||||||
|
lowBattery = event.isLowBatteryEnabled;
|
||||||
|
emit(UpdateState(waterSensor: deviceStatus));
|
||||||
|
|
||||||
|
// API call to update the state, if necessary
|
||||||
|
await DevicesAPI.controlDevice(
|
||||||
|
DeviceControlModel(
|
||||||
|
deviceId: WLId,
|
||||||
|
code: 'low_battery',
|
||||||
|
value: lowBattery,
|
||||||
|
),
|
||||||
|
WLId,
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
emit(WaterLeakFailedState(errorMessage: e.toString()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void _toggleClosingReminder(
|
||||||
|
ToggleClosingReminderEvent event, Emitter<WaterLeakState> emit) async {
|
||||||
|
emit(LoadingNewSate(waterSensor: deviceStatus));
|
||||||
|
try {
|
||||||
|
closingReminder = event.isClosingReminderEnabled;
|
||||||
|
emit(UpdateState(waterSensor: deviceStatus));
|
||||||
|
|
||||||
|
// API call to update the state, if necessary
|
||||||
|
await DevicesAPI.controlDevice(
|
||||||
|
DeviceControlModel(
|
||||||
|
deviceId: WLId,
|
||||||
|
code: 'closing_reminder',
|
||||||
|
value: closingReminder,
|
||||||
|
),
|
||||||
|
WLId,
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
emit(WaterLeakFailedState(errorMessage: e.toString()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void _toggleWaterLeakAlarm(
|
||||||
|
ToggleWaterLeakAlarmEvent event, Emitter<WaterLeakState> emit) async {
|
||||||
|
emit(LoadingNewSate(waterSensor: deviceStatus));
|
||||||
|
try {
|
||||||
|
waterAlarm = event.isWaterLeakAlarmEnabled;
|
||||||
|
emit(UpdateState(waterSensor: deviceStatus));
|
||||||
|
|
||||||
|
// API call to update the state, if necessary
|
||||||
|
await DevicesAPI.controlDevice(
|
||||||
|
DeviceControlModel(
|
||||||
|
deviceId: WLId,
|
||||||
|
code: 'water_alarm',
|
||||||
|
value: waterAlarm,
|
||||||
|
),
|
||||||
|
WLId,
|
||||||
|
);
|
||||||
|
} catch (e) {
|
||||||
|
emit(WaterLeakFailedState(errorMessage: e.toString()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DeviceReport recordGroups = DeviceReport(
|
||||||
|
startTime: '0',
|
||||||
|
endTime: '0',
|
||||||
|
data: [DeviceEvent(code: '111', eventTime: 23456789, value: 'tyuio')]);
|
||||||
|
|
||||||
|
Future<void> fetchLogsForLastMonth(
|
||||||
|
ReportLogsInitial event, Emitter<WaterLeakState> emit) async {
|
||||||
|
// Get the current date and time
|
||||||
|
DateTime now = DateTime.now();
|
||||||
|
|
||||||
|
// Calculate the date one month ago
|
||||||
|
DateTime lastMonth = DateTime(now.year, now.month - 1, now.day);
|
||||||
|
|
||||||
|
// Convert the date to milliseconds since epoch (Unix timestamp in milliseconds)
|
||||||
|
int startTime = lastMonth.millisecondsSinceEpoch;
|
||||||
|
int endTime = now.millisecondsSinceEpoch;
|
||||||
|
try {
|
||||||
|
emit(WaterLeakLoadingState());
|
||||||
|
// var response = await DevicesAPI.getReportLogs(
|
||||||
|
// startTime:
|
||||||
|
// startTime.toString(), // Convert to String if the API expects it
|
||||||
|
// endTime: endTime.toString(), // Convert to String if the API expects it
|
||||||
|
// deviceUuid: WLId,
|
||||||
|
// code: 'watercontact_state',
|
||||||
|
// );
|
||||||
|
// print('response======${response}');
|
||||||
|
// recordGroups = response;
|
||||||
|
// Process response here
|
||||||
|
emit(UpdateState(waterSensor: deviceStatus));
|
||||||
|
} on DioException catch (e) {
|
||||||
|
final errorData = e.response!.data;
|
||||||
|
String errorMessage = errorData['message'];
|
||||||
|
// Handle error
|
||||||
|
print('Error fetching logs: ${errorMessage}');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_listenToChanges() {
|
||||||
|
try {
|
||||||
|
DatabaseReference ref =
|
||||||
|
FirebaseDatabase.instance.ref('device-status/$WLId');
|
||||||
|
Stream<DatabaseEvent> stream = ref.onValue;
|
||||||
|
|
||||||
|
stream.listen((DatabaseEvent event) async {
|
||||||
|
if (_timer != null) {
|
||||||
|
await Future.delayed(const Duration(seconds: 2));
|
||||||
|
}
|
||||||
|
Map<dynamic, dynamic> usersMap =
|
||||||
|
event.snapshot.value as Map<dynamic, dynamic>;
|
||||||
|
List<StatusModel> statusList = [];
|
||||||
|
|
||||||
|
usersMap['status'].forEach((element) {
|
||||||
|
statusList.add(StatusModel(code: element['code'], value: true));
|
||||||
|
});
|
||||||
|
|
||||||
|
deviceStatus = WaterLeakModel.fromJson(statusList);
|
||||||
|
if (!isClosed) {
|
||||||
|
add(
|
||||||
|
WaterLeakSwitch(switchD: deviceStatus.waterContactState),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (_) {}
|
||||||
|
}
|
||||||
|
}
|
||||||
102
lib/features/devices/bloc/water_leak_bloc/water_leak_event.dart
Normal file
102
lib/features/devices/bloc/water_leak_bloc/water_leak_event.dart
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
|
||||||
|
abstract class WaterLeakEvent extends Equatable {
|
||||||
|
const WaterLeakEvent();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class WaterLeakLoading extends WaterLeakEvent {}
|
||||||
|
|
||||||
|
class WaterLeakSwitch extends WaterLeakEvent {
|
||||||
|
final bool switchD;
|
||||||
|
final String deviceId;
|
||||||
|
final String productId;
|
||||||
|
const WaterLeakSwitch({required this.switchD, this.deviceId = '', this.productId = ''});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [switchD, deviceId, productId];
|
||||||
|
}
|
||||||
|
|
||||||
|
class WaterLeakUpdated extends WaterLeakEvent {}
|
||||||
|
|
||||||
|
class WaterLeakInitial extends WaterLeakEvent {
|
||||||
|
const WaterLeakInitial();
|
||||||
|
}
|
||||||
|
|
||||||
|
class ReportLogsInitial extends WaterLeakEvent {
|
||||||
|
const ReportLogsInitial();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class WaterLeakChangeStatus extends WaterLeakEvent {}
|
||||||
|
|
||||||
|
|
||||||
|
class GetCounterEvent extends WaterLeakEvent {
|
||||||
|
final String deviceCode;
|
||||||
|
const GetCounterEvent({required this.deviceCode});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [deviceCode];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class ToggleLowBatteryEvent extends WaterLeakEvent {
|
||||||
|
final bool isLowBatteryEnabled;
|
||||||
|
|
||||||
|
const ToggleLowBatteryEvent(this.isLowBatteryEnabled);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [isLowBatteryEnabled];
|
||||||
|
}
|
||||||
|
|
||||||
|
class ToggleClosingReminderEvent extends WaterLeakEvent {
|
||||||
|
final bool isClosingReminderEnabled;
|
||||||
|
|
||||||
|
const ToggleClosingReminderEvent(this.isClosingReminderEnabled);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [isClosingReminderEnabled];
|
||||||
|
}
|
||||||
|
|
||||||
|
class ToggleWaterLeakAlarmEvent extends WaterLeakEvent {
|
||||||
|
final bool isWaterLeakAlarmEnabled;
|
||||||
|
|
||||||
|
const ToggleWaterLeakAlarmEvent(this.isWaterLeakAlarmEnabled);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [isWaterLeakAlarmEnabled];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class SetCounterValue extends WaterLeakEvent {
|
||||||
|
final Duration duration;
|
||||||
|
final String deviceCode;
|
||||||
|
const SetCounterValue({required this.duration, required this.deviceCode});
|
||||||
|
@override
|
||||||
|
List<Object> get props => [duration, deviceCode];
|
||||||
|
}
|
||||||
|
|
||||||
|
class StartTimer extends WaterLeakEvent {
|
||||||
|
final int duration;
|
||||||
|
|
||||||
|
const StartTimer(this.duration);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [duration];
|
||||||
|
}
|
||||||
|
|
||||||
|
class TickTimer extends WaterLeakEvent {
|
||||||
|
final int remainingTime;
|
||||||
|
|
||||||
|
const TickTimer(this.remainingTime);
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [remainingTime];
|
||||||
|
}
|
||||||
|
|
||||||
|
class StopTimer extends WaterLeakEvent {}
|
||||||
|
|
||||||
|
class OnClose extends WaterLeakEvent {}
|
||||||
@ -0,0 +1,39 @@
|
|||||||
|
import 'package:equatable/equatable.dart';
|
||||||
|
import 'package:syncrow_app/features/devices/model/water_leak_model.dart';
|
||||||
|
|
||||||
|
class WaterLeakState extends Equatable {
|
||||||
|
const WaterLeakState();
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [];
|
||||||
|
}
|
||||||
|
|
||||||
|
class WaterLeakInitialState extends WaterLeakState {}
|
||||||
|
|
||||||
|
class WaterLeakLoadingState extends WaterLeakState {}
|
||||||
|
|
||||||
|
class WaterLeakFailedState extends WaterLeakState {
|
||||||
|
final String errorMessage;
|
||||||
|
|
||||||
|
const WaterLeakFailedState({required this.errorMessage});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [errorMessage];
|
||||||
|
}
|
||||||
|
|
||||||
|
class UpdateState extends WaterLeakState {
|
||||||
|
final WaterLeakModel waterSensor;
|
||||||
|
const UpdateState({required this.waterSensor});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [waterSensor];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class LoadingNewSate extends WaterLeakState {
|
||||||
|
final WaterLeakModel waterSensor;
|
||||||
|
const LoadingNewSate({required this.waterSensor});
|
||||||
|
|
||||||
|
@override
|
||||||
|
List<Object> get props => [waterSensor];
|
||||||
|
}
|
||||||
@ -74,8 +74,9 @@ class DeviceModel {
|
|||||||
tempIcon = Assets.garageIcon;
|
tempIcon = Assets.garageIcon;
|
||||||
} else if (type == DeviceType.ThreeTouch) {
|
} else if (type == DeviceType.ThreeTouch) {
|
||||||
tempIcon = Assets.assetsIcons3GangSwitch;
|
tempIcon = Assets.assetsIcons3GangSwitch;
|
||||||
}
|
} else if (type == DeviceType.WaterLeak) {
|
||||||
else {
|
tempIcon = Assets.waterLeakIcon;
|
||||||
|
} else {
|
||||||
tempIcon = Assets.assetsIconsLogo;
|
tempIcon = Assets.assetsIconsLogo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
28
lib/features/devices/model/water_leak_model.dart
Normal file
28
lib/features/devices/model/water_leak_model.dart
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import 'package:syncrow_app/features/devices/model/status_model.dart';
|
||||||
|
|
||||||
|
class WaterLeakModel {
|
||||||
|
bool waterContactState;
|
||||||
|
int batteryPercentage;
|
||||||
|
|
||||||
|
WaterLeakModel({
|
||||||
|
required this.waterContactState,
|
||||||
|
required this.batteryPercentage,
|
||||||
|
});
|
||||||
|
|
||||||
|
factory WaterLeakModel.fromJson(List<StatusModel> jsonList) {
|
||||||
|
late bool _waterContactState;
|
||||||
|
late int _batteryPercentage;
|
||||||
|
|
||||||
|
for (int i = 0; i < jsonList.length; i++) {
|
||||||
|
if (jsonList[i].code == 'watersensor_state') {
|
||||||
|
_waterContactState = jsonList[i].value ?? false;
|
||||||
|
} else if (jsonList[i].code == 'battery_percentage') {
|
||||||
|
_batteryPercentage = jsonList[i].value ?? 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return WaterLeakModel(
|
||||||
|
waterContactState: _waterContactState,
|
||||||
|
batteryPercentage: _batteryPercentage,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -23,6 +23,7 @@ import 'package:syncrow_app/features/devices/view/widgets/ceiling_sensor/ceiling
|
|||||||
import 'package:syncrow_app/features/devices/view/widgets/smart_door/door_interface.dart';
|
import 'package:syncrow_app/features/devices/view/widgets/smart_door/door_interface.dart';
|
||||||
import 'package:syncrow_app/features/devices/view/widgets/three_gang/three_gang_interface.dart';
|
import 'package:syncrow_app/features/devices/view/widgets/three_gang/three_gang_interface.dart';
|
||||||
import 'package:syncrow_app/features/devices/view/widgets/water_heater/water_heater_page.dart';
|
import 'package:syncrow_app/features/devices/view/widgets/water_heater/water_heater_page.dart';
|
||||||
|
import 'package:syncrow_app/features/devices/view/widgets/water_leak/water_leak_screen.dart';
|
||||||
import 'package:syncrow_app/features/shared_widgets/default_container.dart';
|
import 'package:syncrow_app/features/shared_widgets/default_container.dart';
|
||||||
import 'package:syncrow_app/utils/context_extension.dart';
|
import 'package:syncrow_app/utils/context_extension.dart';
|
||||||
import 'package:syncrow_app/utils/helpers/custom_page_route.dart';
|
import 'package:syncrow_app/utils/helpers/custom_page_route.dart';
|
||||||
@ -196,6 +197,13 @@ void showDeviceInterface(DeviceModel device, BuildContext context) {
|
|||||||
pageBuilder: (context, animation1, animation2) =>
|
pageBuilder: (context, animation1, animation2) =>
|
||||||
GarageDoorScreen(device: device)));
|
GarageDoorScreen(device: device)));
|
||||||
|
|
||||||
|
case DeviceType.WaterLeak:
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
PageRouteBuilder(
|
||||||
|
pageBuilder: (context, animation1, animation2) =>
|
||||||
|
WaterLeakScreen(device: device)));
|
||||||
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,93 @@
|
|||||||
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
import 'package:syncrow_app/features/devices/bloc/water_leak_bloc/water_leak_bloc.dart';
|
||||||
|
import 'package:syncrow_app/features/devices/bloc/water_leak_bloc/water_leak_event.dart';
|
||||||
|
import 'package:syncrow_app/features/devices/bloc/water_leak_bloc/water_leak_state.dart';
|
||||||
|
|
||||||
|
import 'package:syncrow_app/features/shared_widgets/default_container.dart';
|
||||||
|
import 'package:syncrow_app/features/shared_widgets/default_scaffold.dart';
|
||||||
|
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_large.dart';
|
||||||
|
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
|
||||||
|
|
||||||
|
class NotificationSettingsPage extends StatelessWidget {
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return DefaultScaffold(
|
||||||
|
title: 'Notification Settings',
|
||||||
|
child: BlocProvider(
|
||||||
|
create: (context) =>
|
||||||
|
WaterLeakBloc(WLId: '')..add(const WaterLeakInitial()),
|
||||||
|
child: BlocBuilder<WaterLeakBloc, WaterLeakState>(
|
||||||
|
builder: (context, state) {
|
||||||
|
final waterLeakBloc = BlocProvider.of<WaterLeakBloc>(context);
|
||||||
|
|
||||||
|
return state is WaterLeakLoading
|
||||||
|
? const Center(
|
||||||
|
child: DefaultContainer(
|
||||||
|
width: 50,
|
||||||
|
height: 50,
|
||||||
|
child: CircularProgressIndicator()),
|
||||||
|
)
|
||||||
|
: Column(
|
||||||
|
children: [
|
||||||
|
DefaultContainer(
|
||||||
|
child: Column(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
height: 50,
|
||||||
|
child: ListTile(
|
||||||
|
contentPadding: EdgeInsets.zero,
|
||||||
|
leading: const BodyLarge(
|
||||||
|
text: 'Low Battery Alarm',
|
||||||
|
fontWeight: FontWeight.normal,
|
||||||
|
),
|
||||||
|
trailing: Transform.scale(
|
||||||
|
scale: .8,
|
||||||
|
child: CupertinoSwitch(
|
||||||
|
value: waterLeakBloc.lowBattery,
|
||||||
|
onChanged: (value) {
|
||||||
|
context.read<WaterLeakBloc>().add(
|
||||||
|
ToggleLowBatteryEvent(value));
|
||||||
|
},
|
||||||
|
applyTheme: true,
|
||||||
|
)),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const Divider(
|
||||||
|
color: ColorsManager.graysColor,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
height: 50,
|
||||||
|
child: ListTile(
|
||||||
|
contentPadding: EdgeInsets.zero,
|
||||||
|
leading: const BodyLarge(
|
||||||
|
text: 'Water Leakage Alarm',
|
||||||
|
fontWeight: FontWeight.normal,
|
||||||
|
),
|
||||||
|
trailing: Transform.scale(
|
||||||
|
scale: .8,
|
||||||
|
child: CupertinoSwitch(
|
||||||
|
value: waterLeakBloc.closingReminder,
|
||||||
|
onChanged: (value) {
|
||||||
|
context.read<WaterLeakBloc>().add(
|
||||||
|
ToggleClosingReminderEvent(
|
||||||
|
value));
|
||||||
|
},
|
||||||
|
applyTheme: true,
|
||||||
|
)),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,220 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
import 'package:intl/intl.dart';
|
||||||
|
import 'package:syncrow_app/features/devices/bloc/water_leak_bloc/water_leak_bloc.dart';
|
||||||
|
import 'package:syncrow_app/features/devices/bloc/water_leak_bloc/water_leak_event.dart';
|
||||||
|
import 'package:syncrow_app/features/devices/bloc/water_leak_bloc/water_leak_state.dart';
|
||||||
|
import 'package:syncrow_app/features/devices/model/device_report_model.dart';
|
||||||
|
import 'package:syncrow_app/features/shared_widgets/default_container.dart';
|
||||||
|
import 'package:syncrow_app/features/shared_widgets/default_scaffold.dart';
|
||||||
|
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_small.dart';
|
||||||
|
import 'package:syncrow_app/utils/context_extension.dart';
|
||||||
|
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
|
||||||
|
|
||||||
|
class WaterLeakRecordsScreen extends StatelessWidget {
|
||||||
|
final String WLId;
|
||||||
|
const WaterLeakRecordsScreen({super.key, required this.WLId});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return DefaultScaffold(
|
||||||
|
title: 'Records',
|
||||||
|
child: BlocProvider(
|
||||||
|
create: (context) =>
|
||||||
|
WaterLeakBloc(WLId: WLId ?? '')..add(const ReportLogsInitial()),
|
||||||
|
child: BlocBuilder<WaterLeakBloc, WaterLeakState>(
|
||||||
|
builder: (context, state) {
|
||||||
|
final waterSensorBloc = BlocProvider.of<WaterLeakBloc>(context);
|
||||||
|
final Map<String, List<DeviceEvent>> groupedRecords = {};
|
||||||
|
|
||||||
|
if (state is WaterLeakLoadingState) {
|
||||||
|
return const Center(
|
||||||
|
child: DefaultContainer(
|
||||||
|
width: 50, height: 50, child: CircularProgressIndicator()),
|
||||||
|
);
|
||||||
|
} else if (state is UpdateState) {
|
||||||
|
// Group records by formatted date
|
||||||
|
|
||||||
|
// Iterate over the data list in DeviceReport
|
||||||
|
for (var record in waterSensorBloc.recordGroups.data!) {
|
||||||
|
final DateTime eventDateTime =
|
||||||
|
DateTime.fromMillisecondsSinceEpoch(record.eventTime!);
|
||||||
|
final String formattedDate =
|
||||||
|
DateFormat('EEEE, dd/MM/yyyy').format(eventDateTime);
|
||||||
|
|
||||||
|
// Group by formatted date
|
||||||
|
if (groupedRecords.containsKey(formattedDate)) {
|
||||||
|
groupedRecords[formattedDate]!.add(record);
|
||||||
|
} else {
|
||||||
|
groupedRecords[formattedDate] = [record];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return DefaultTabController(
|
||||||
|
// Wrap with DefaultTabController
|
||||||
|
length: 2,
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
width: MediaQuery.of(context).size.width,
|
||||||
|
decoration: const ShapeDecoration(
|
||||||
|
color: ColorsManager.onPrimaryColor,
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.all(Radius.circular(30)),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
child: TabBar(
|
||||||
|
onTap: (value) {
|
||||||
|
// if (value == 0) {
|
||||||
|
// if (oneTouchBloc.createSchedule == true) {
|
||||||
|
// // oneTouchBloc.toggleCreateSchedule();
|
||||||
|
// oneTouchBloc
|
||||||
|
// .add(const ToggleCreateScheduleEvent(index: 0));
|
||||||
|
// }
|
||||||
|
// oneTouchBloc.add(const ToggleSelectedEvent(index: 0));
|
||||||
|
// } else {
|
||||||
|
// oneTouchBloc.add(const ToggleSelectedEvent(index: 1));
|
||||||
|
// }
|
||||||
|
},
|
||||||
|
indicatorColor: Colors.white, // Customize the indicator
|
||||||
|
dividerHeight: 0,
|
||||||
|
indicatorSize: TabBarIndicatorSize.tab,
|
||||||
|
indicator: const ShapeDecoration(
|
||||||
|
color: ColorsManager.slidingBlueColor,
|
||||||
|
shape: RoundedRectangleBorder(
|
||||||
|
borderRadius: BorderRadius.all(Radius.circular(20)),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
tabs: [
|
||||||
|
Tab(
|
||||||
|
child: Container(
|
||||||
|
padding: const EdgeInsets.symmetric(vertical: 10),
|
||||||
|
child: BodySmall(
|
||||||
|
text: 'Record',
|
||||||
|
style: context.bodySmall.copyWith(
|
||||||
|
color: ColorsManager.blackColor,
|
||||||
|
fontSize: 12,
|
||||||
|
fontWeight: FontWeight.w400,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Tab(
|
||||||
|
child: Container(
|
||||||
|
padding: const EdgeInsets.symmetric(vertical: 10),
|
||||||
|
child: Text(
|
||||||
|
'Automation Record',
|
||||||
|
style: context.bodySmall.copyWith(
|
||||||
|
color: ColorsManager.blackColor,
|
||||||
|
fontSize: 12,
|
||||||
|
fontWeight: FontWeight.w400,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: TabBarView(
|
||||||
|
physics:
|
||||||
|
const NeverScrollableScrollPhysics(), // Disable swiping
|
||||||
|
|
||||||
|
children: [
|
||||||
|
// Build the ListView with grouped data
|
||||||
|
ListView.builder(
|
||||||
|
itemCount: groupedRecords.length,
|
||||||
|
itemBuilder: (context, index) {
|
||||||
|
final String date =
|
||||||
|
groupedRecords.keys.elementAt(index);
|
||||||
|
final List<DeviceEvent> recordsForDate =
|
||||||
|
groupedRecords[date]!;
|
||||||
|
|
||||||
|
return Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
children: [
|
||||||
|
// Date header
|
||||||
|
Padding(
|
||||||
|
padding: const EdgeInsets.all(16.0),
|
||||||
|
child: Text(
|
||||||
|
date,
|
||||||
|
style: const TextStyle(
|
||||||
|
color: ColorsManager.grayColor,
|
||||||
|
fontSize: 13,
|
||||||
|
fontWeight: FontWeight.w700,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// List of records for the specific date
|
||||||
|
DefaultContainer(
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
...recordsForDate
|
||||||
|
.asMap()
|
||||||
|
.entries
|
||||||
|
.map((entry) {
|
||||||
|
final int idx = entry.key;
|
||||||
|
final DeviceEvent record = entry.value;
|
||||||
|
final DateTime eventDateTime =
|
||||||
|
DateTime.fromMillisecondsSinceEpoch(
|
||||||
|
record.eventTime!);
|
||||||
|
final String formattedTime =
|
||||||
|
DateFormat('HH:mm:ss')
|
||||||
|
.format(eventDateTime);
|
||||||
|
|
||||||
|
return Column(
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
child: ListTile(
|
||||||
|
leading: Icon(
|
||||||
|
record.value == 'true'
|
||||||
|
? Icons.radio_button_checked
|
||||||
|
: Icons
|
||||||
|
.radio_button_unchecked,
|
||||||
|
color: record.value == 'true'
|
||||||
|
? Colors.blue
|
||||||
|
: Colors.grey,
|
||||||
|
),
|
||||||
|
title: Text(
|
||||||
|
record.value == 'true'
|
||||||
|
? "Opened"
|
||||||
|
: "Closed",
|
||||||
|
style: const TextStyle(
|
||||||
|
fontWeight: FontWeight.bold,
|
||||||
|
fontSize: 18,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
subtitle: Text('$formattedTime'),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
// Only add Divider if it's not the last item
|
||||||
|
if (idx != recordsForDate.length - 1)
|
||||||
|
const Divider(
|
||||||
|
color: ColorsManager.graysColor,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}).toList(),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
Container(
|
||||||
|
height: 10,
|
||||||
|
width: 20,
|
||||||
|
)
|
||||||
|
]))
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
// return const Center(child: Text('No data available.'));
|
||||||
|
// },
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,203 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_bloc/flutter_bloc.dart';
|
||||||
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
|
import 'package:syncrow_app/features/devices/bloc/water_leak_bloc/water_leak_bloc.dart';
|
||||||
|
import 'package:syncrow_app/features/devices/bloc/water_leak_bloc/water_leak_event.dart';
|
||||||
|
import 'package:syncrow_app/features/devices/bloc/water_leak_bloc/water_leak_state.dart';
|
||||||
|
import 'package:syncrow_app/features/devices/model/device_model.dart';
|
||||||
|
import 'package:syncrow_app/features/devices/model/water_leak_model.dart';
|
||||||
|
import 'package:syncrow_app/features/devices/view/widgets/water_leak/water_leak_notification_settings.dart';
|
||||||
|
import 'package:syncrow_app/features/devices/view/widgets/water_leak/water_leak_records_screen.dart';
|
||||||
|
import 'package:syncrow_app/features/shared_widgets/battery_bar.dart';
|
||||||
|
import 'package:syncrow_app/features/shared_widgets/default_container.dart';
|
||||||
|
import 'package:syncrow_app/features/shared_widgets/default_scaffold.dart';
|
||||||
|
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_small.dart';
|
||||||
|
import 'package:syncrow_app/generated/assets.dart';
|
||||||
|
|
||||||
|
class WaterLeakScreen extends StatelessWidget {
|
||||||
|
final DeviceModel? device;
|
||||||
|
|
||||||
|
const WaterLeakScreen({super.key, this.device});
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return DefaultScaffold(
|
||||||
|
title: 'Water Leak Sensor',
|
||||||
|
child: BlocProvider(
|
||||||
|
create: (context) => WaterLeakBloc(WLId: device?.uuid ?? '')
|
||||||
|
..add(const WaterLeakInitial()),
|
||||||
|
child: BlocBuilder<WaterLeakBloc, WaterLeakState>(
|
||||||
|
builder: (context, state) {
|
||||||
|
final waterLeakBloc = BlocProvider.of<WaterLeakBloc>(context);
|
||||||
|
WaterLeakModel model =
|
||||||
|
WaterLeakModel(batteryPercentage: 0, waterContactState: false);
|
||||||
|
if (state is LoadingNewSate) {
|
||||||
|
model = state.waterSensor;
|
||||||
|
} else if (state is UpdateState) {
|
||||||
|
model = state.waterSensor;
|
||||||
|
}
|
||||||
|
return state is WaterLeakLoadingState
|
||||||
|
? const Center(
|
||||||
|
child: DefaultContainer(
|
||||||
|
width: 50,
|
||||||
|
height: 50,
|
||||||
|
child: CircularProgressIndicator()),
|
||||||
|
)
|
||||||
|
: RefreshIndicator(
|
||||||
|
onRefresh: () async {
|
||||||
|
waterLeakBloc.add(const WaterLeakInitial());
|
||||||
|
},
|
||||||
|
child: ListView(
|
||||||
|
children: [
|
||||||
|
SizedBox(
|
||||||
|
height: MediaQuery.sizeOf(context).height * 0.8,
|
||||||
|
child: Column(
|
||||||
|
children: [
|
||||||
|
BatteryBar(
|
||||||
|
batteryPercentage: model.batteryPercentage,
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
flex: 4,
|
||||||
|
child: InkWell(
|
||||||
|
overlayColor: WidgetStateProperty.all(
|
||||||
|
Colors.transparent),
|
||||||
|
onTap: () {},
|
||||||
|
child: Row(
|
||||||
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
Container(
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
// color: Colors.white.withOpacity(0.1),
|
||||||
|
borderRadius:
|
||||||
|
BorderRadius.circular(890),
|
||||||
|
boxShadow: [
|
||||||
|
BoxShadow(
|
||||||
|
color:
|
||||||
|
Colors.white.withOpacity(0.1),
|
||||||
|
blurRadius: 24,
|
||||||
|
offset: const Offset(-5, -5),
|
||||||
|
blurStyle: BlurStyle.outer,
|
||||||
|
),
|
||||||
|
BoxShadow(
|
||||||
|
color: Colors.black
|
||||||
|
.withOpacity(0.11),
|
||||||
|
blurRadius: 25,
|
||||||
|
offset: const Offset(5, 5),
|
||||||
|
blurStyle: BlurStyle.outer,
|
||||||
|
),
|
||||||
|
BoxShadow(
|
||||||
|
color: Colors.black
|
||||||
|
.withOpacity(0.13),
|
||||||
|
blurRadius: 30,
|
||||||
|
offset: const Offset(5, 5),
|
||||||
|
blurStyle: BlurStyle.inner,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
child: SvgPicture.asset(
|
||||||
|
model.waterContactState
|
||||||
|
? Assets.normalWaterLeak
|
||||||
|
: Assets.detectedWaterLeak,
|
||||||
|
fit: BoxFit.fill,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Flexible(
|
||||||
|
child: Row(
|
||||||
|
children: [
|
||||||
|
Expanded(
|
||||||
|
child: DefaultContainer(
|
||||||
|
onTap: () {
|
||||||
|
Navigator.of(context).push(
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) =>
|
||||||
|
WaterLeakRecordsScreen(WLId: device!.uuid!)),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.center,
|
||||||
|
mainAxisAlignment:
|
||||||
|
MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
ConstrainedBox(
|
||||||
|
constraints: const BoxConstraints(
|
||||||
|
maxHeight: 46, maxWidth: 50),
|
||||||
|
child: SvgPicture.asset(
|
||||||
|
Assets.doorRecordsIcon),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 15,
|
||||||
|
),
|
||||||
|
const Flexible(
|
||||||
|
child: FittedBox(
|
||||||
|
child: BodySmall(
|
||||||
|
text: 'Records',
|
||||||
|
// doorLockButtons.keys.elementAt(index),
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
width: 10,
|
||||||
|
),
|
||||||
|
Expanded(
|
||||||
|
child: DefaultContainer(
|
||||||
|
onTap: () {
|
||||||
|
Navigator.of(context).push(
|
||||||
|
MaterialPageRoute(
|
||||||
|
builder: (context) => NotificationSettingsPage()),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
child: Column(
|
||||||
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.center,
|
||||||
|
mainAxisAlignment:
|
||||||
|
MainAxisAlignment.center,
|
||||||
|
children: [
|
||||||
|
ConstrainedBox(
|
||||||
|
constraints: const BoxConstraints(
|
||||||
|
maxHeight: 46, maxWidth: 50),
|
||||||
|
child: SvgPicture.asset(Assets
|
||||||
|
.doorNotificationSetting),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 15,
|
||||||
|
),
|
||||||
|
const Flexible(
|
||||||
|
child: FittedBox(
|
||||||
|
child: BodySmall(
|
||||||
|
text: 'Notification Settings',
|
||||||
|
// doorLockButtons.keys.elementAt(index),
|
||||||
|
textAlign: TextAlign.center,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -3,7 +3,8 @@ class Assets {
|
|||||||
|
|
||||||
/// Assets for assetsFontsAftikaRegular
|
/// Assets for assetsFontsAftikaRegular
|
||||||
/// assets/fonts/AftikaRegular.ttf
|
/// assets/fonts/AftikaRegular.ttf
|
||||||
static const String assetsFontsAftikaRegular = "assets/fonts/AftikaRegular.ttf";
|
static const String assetsFontsAftikaRegular =
|
||||||
|
"assets/fonts/AftikaRegular.ttf";
|
||||||
|
|
||||||
/// Assets for assetsIcons3GangSwitch
|
/// Assets for assetsIcons3GangSwitch
|
||||||
/// assets/icons/3GangSwitch.svg
|
/// assets/icons/3GangSwitch.svg
|
||||||
@ -19,82 +20,98 @@ class Assets {
|
|||||||
|
|
||||||
/// Assets for assetsIconsAutomatedClock
|
/// Assets for assetsIconsAutomatedClock
|
||||||
/// assets/icons/automated_clock.svg
|
/// assets/icons/automated_clock.svg
|
||||||
static const String assetsIconsAutomatedClock = "assets/icons/automated_clock.svg";
|
static const String assetsIconsAutomatedClock =
|
||||||
|
"assets/icons/automated_clock.svg";
|
||||||
static const String acSwitchIcon = "assets/icons/ac_switch_ic.svg";
|
static const String acSwitchIcon = "assets/icons/ac_switch_ic.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOffPerOffchargOfflowOffpmOffstChargeddmOff
|
/// Assets for assetsIconsBatteryDmOffPerOffchargOfflowOffpmOffstChargeddmOff
|
||||||
/// assets/icons/battery/dmOff/perOffchargOfflowOffpmOffstChargeddmOff.svg
|
/// assets/icons/battery/dmOff/perOffchargOfflowOffpmOffstChargeddmOff.svg
|
||||||
static const String assetsIconsBatteryDmOffPerOffchargOfflowOffpmOffstChargeddmOff =
|
static const String
|
||||||
|
assetsIconsBatteryDmOffPerOffchargOfflowOffpmOffstChargeddmOff =
|
||||||
"assets/icons/battery/dmOff/perOffchargOfflowOffpmOffstChargeddmOff.svg";
|
"assets/icons/battery/dmOff/perOffchargOfflowOffpmOffstChargeddmOff.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOffPerOffchargOfflowOffpmOffstDefaultdmOff
|
/// Assets for assetsIconsBatteryDmOffPerOffchargOfflowOffpmOffstDefaultdmOff
|
||||||
/// assets/icons/battery/dmOff/perOffchargOfflowOffpmOffstDefaultdmOff.svg
|
/// assets/icons/battery/dmOff/perOffchargOfflowOffpmOffstDefaultdmOff.svg
|
||||||
static const String assetsIconsBatteryDmOffPerOffchargOfflowOffpmOffstDefaultdmOff =
|
static const String
|
||||||
|
assetsIconsBatteryDmOffPerOffchargOfflowOffpmOffstDefaultdmOff =
|
||||||
"assets/icons/battery/dmOff/perOffchargOfflowOffpmOffstDefaultdmOff.svg";
|
"assets/icons/battery/dmOff/perOffchargOfflowOffpmOffstDefaultdmOff.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOffPerOffchargOfflowOffpmOnstChargeddmOff
|
/// Assets for assetsIconsBatteryDmOffPerOffchargOfflowOffpmOnstChargeddmOff
|
||||||
/// assets/icons/battery/dmOff/perOffchargOfflowOffpmOnstChargeddmOff.svg
|
/// assets/icons/battery/dmOff/perOffchargOfflowOffpmOnstChargeddmOff.svg
|
||||||
static const String assetsIconsBatteryDmOffPerOffchargOfflowOffpmOnstChargeddmOff =
|
static const String
|
||||||
|
assetsIconsBatteryDmOffPerOffchargOfflowOffpmOnstChargeddmOff =
|
||||||
"assets/icons/battery/dmOff/perOffchargOfflowOffpmOnstChargeddmOff.svg";
|
"assets/icons/battery/dmOff/perOffchargOfflowOffpmOnstChargeddmOff.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOffPerOffchargOfflowOnpmOffstDefaultdmOff
|
/// Assets for assetsIconsBatteryDmOffPerOffchargOfflowOnpmOffstDefaultdmOff
|
||||||
/// assets/icons/battery/dmOff/perOffchargOfflowOnpmOffstDefaultdmOff.svg
|
/// assets/icons/battery/dmOff/perOffchargOfflowOnpmOffstDefaultdmOff.svg
|
||||||
static const String assetsIconsBatteryDmOffPerOffchargOfflowOnpmOffstDefaultdmOff =
|
static const String
|
||||||
|
assetsIconsBatteryDmOffPerOffchargOfflowOnpmOffstDefaultdmOff =
|
||||||
"assets/icons/battery/dmOff/perOffchargOfflowOnpmOffstDefaultdmOff.svg";
|
"assets/icons/battery/dmOff/perOffchargOfflowOnpmOffstDefaultdmOff.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOffPerOffchargOfflowOnpmOnstDefaultdmOff
|
/// Assets for assetsIconsBatteryDmOffPerOffchargOfflowOnpmOnstDefaultdmOff
|
||||||
/// assets/icons/battery/dmOff/perOffchargOfflowOnpmOnstDefaultdmOff.svg
|
/// assets/icons/battery/dmOff/perOffchargOfflowOnpmOnstDefaultdmOff.svg
|
||||||
static const String assetsIconsBatteryDmOffPerOffchargOfflowOnpmOnstDefaultdmOff =
|
static const String
|
||||||
|
assetsIconsBatteryDmOffPerOffchargOfflowOnpmOnstDefaultdmOff =
|
||||||
"assets/icons/battery/dmOff/perOffchargOfflowOnpmOnstDefaultdmOff.svg";
|
"assets/icons/battery/dmOff/perOffchargOfflowOnpmOnstDefaultdmOff.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOffPerOffchargOnlowOffpmOffstChargeddmOff
|
/// Assets for assetsIconsBatteryDmOffPerOffchargOnlowOffpmOffstChargeddmOff
|
||||||
/// assets/icons/battery/dmOff/perOffchargOnlowOffpmOffstChargeddmOff.svg
|
/// assets/icons/battery/dmOff/perOffchargOnlowOffpmOffstChargeddmOff.svg
|
||||||
static const String assetsIconsBatteryDmOffPerOffchargOnlowOffpmOffstChargeddmOff =
|
static const String
|
||||||
|
assetsIconsBatteryDmOffPerOffchargOnlowOffpmOffstChargeddmOff =
|
||||||
"assets/icons/battery/dmOff/perOffchargOnlowOffpmOffstChargeddmOff.svg";
|
"assets/icons/battery/dmOff/perOffchargOnlowOffpmOffstChargeddmOff.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOffPerOffchargOnlowOnpmOffstlowBatterydmOff
|
/// Assets for assetsIconsBatteryDmOffPerOffchargOnlowOnpmOffstlowBatterydmOff
|
||||||
/// assets/icons/battery/dmOff/perOffchargOnlowOnpmOffstlowBatterydmOff.svg
|
/// assets/icons/battery/dmOff/perOffchargOnlowOnpmOffstlowBatterydmOff.svg
|
||||||
static const String assetsIconsBatteryDmOffPerOffchargOnlowOnpmOffstlowBatterydmOff =
|
static const String
|
||||||
|
assetsIconsBatteryDmOffPerOffchargOnlowOnpmOffstlowBatterydmOff =
|
||||||
"assets/icons/battery/dmOff/perOffchargOnlowOnpmOffstlowBatterydmOff.svg";
|
"assets/icons/battery/dmOff/perOffchargOnlowOnpmOffstlowBatterydmOff.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOffPerOffchargOnlowOnpmOnstlowpmdmOff
|
/// Assets for assetsIconsBatteryDmOffPerOffchargOnlowOnpmOnstlowpmdmOff
|
||||||
/// assets/icons/battery/dmOff/perOffchargOnlowOnpmOnstlowpmdmOff.svg
|
/// assets/icons/battery/dmOff/perOffchargOnlowOnpmOnstlowpmdmOff.svg
|
||||||
static const String assetsIconsBatteryDmOffPerOffchargOnlowOnpmOnstlowpmdmOff =
|
static const String
|
||||||
|
assetsIconsBatteryDmOffPerOffchargOnlowOnpmOnstlowpmdmOff =
|
||||||
"assets/icons/battery/dmOff/perOffchargOnlowOnpmOnstlowpmdmOff.svg";
|
"assets/icons/battery/dmOff/perOffchargOnlowOnpmOnstlowpmdmOff.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOffPerOnchargOfflowOffpmOffstChargeddmOff
|
/// Assets for assetsIconsBatteryDmOffPerOnchargOfflowOffpmOffstChargeddmOff
|
||||||
/// assets/icons/battery/dmOff/perOnchargOfflowOffpmOffstChargeddmOff.svg
|
/// assets/icons/battery/dmOff/perOnchargOfflowOffpmOffstChargeddmOff.svg
|
||||||
static const String assetsIconsBatteryDmOffPerOnchargOfflowOffpmOffstChargeddmOff =
|
static const String
|
||||||
|
assetsIconsBatteryDmOffPerOnchargOfflowOffpmOffstChargeddmOff =
|
||||||
"assets/icons/battery/dmOff/perOnchargOfflowOffpmOffstChargeddmOff.svg";
|
"assets/icons/battery/dmOff/perOnchargOfflowOffpmOffstChargeddmOff.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOffPerOnchargOfflowOffpmOffstDefaultdmOff
|
/// Assets for assetsIconsBatteryDmOffPerOnchargOfflowOffpmOffstDefaultdmOff
|
||||||
/// assets/icons/battery/dmOff/perOnchargOfflowOffpmOffstDefaultdmOff.svg
|
/// assets/icons/battery/dmOff/perOnchargOfflowOffpmOffstDefaultdmOff.svg
|
||||||
static const String assetsIconsBatteryDmOffPerOnchargOfflowOffpmOffstDefaultdmOff =
|
static const String
|
||||||
|
assetsIconsBatteryDmOffPerOnchargOfflowOffpmOffstDefaultdmOff =
|
||||||
"assets/icons/battery/dmOff/perOnchargOfflowOffpmOffstDefaultdmOff.svg";
|
"assets/icons/battery/dmOff/perOnchargOfflowOffpmOffstDefaultdmOff.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOffPerOnchargOfflowOffpmOnstChargeddmOff
|
/// Assets for assetsIconsBatteryDmOffPerOnchargOfflowOffpmOnstChargeddmOff
|
||||||
/// assets/icons/battery/dmOff/perOnchargOfflowOffpmOnstChargeddmOff.svg
|
/// assets/icons/battery/dmOff/perOnchargOfflowOffpmOnstChargeddmOff.svg
|
||||||
static const String assetsIconsBatteryDmOffPerOnchargOfflowOffpmOnstChargeddmOff =
|
static const String
|
||||||
|
assetsIconsBatteryDmOffPerOnchargOfflowOffpmOnstChargeddmOff =
|
||||||
"assets/icons/battery/dmOff/perOnchargOfflowOffpmOnstChargeddmOff.svg";
|
"assets/icons/battery/dmOff/perOnchargOfflowOffpmOnstChargeddmOff.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOffPerOnchargOfflowOnpmOffstDefaultdmOff
|
/// Assets for assetsIconsBatteryDmOffPerOnchargOfflowOnpmOffstDefaultdmOff
|
||||||
/// assets/icons/battery/dmOff/perOnchargOfflowOnpmOffstDefaultdmOff.svg
|
/// assets/icons/battery/dmOff/perOnchargOfflowOnpmOffstDefaultdmOff.svg
|
||||||
static const String assetsIconsBatteryDmOffPerOnchargOfflowOnpmOffstDefaultdmOff =
|
static const String
|
||||||
|
assetsIconsBatteryDmOffPerOnchargOfflowOnpmOffstDefaultdmOff =
|
||||||
"assets/icons/battery/dmOff/perOnchargOfflowOnpmOffstDefaultdmOff.svg";
|
"assets/icons/battery/dmOff/perOnchargOfflowOnpmOffstDefaultdmOff.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOffPerOnchargOfflowOnpmOnstDefaultdmOff
|
/// Assets for assetsIconsBatteryDmOffPerOnchargOfflowOnpmOnstDefaultdmOff
|
||||||
/// assets/icons/battery/dmOff/perOnchargOfflowOnpmOnstDefaultdmOff.svg
|
/// assets/icons/battery/dmOff/perOnchargOfflowOnpmOnstDefaultdmOff.svg
|
||||||
static const String assetsIconsBatteryDmOffPerOnchargOfflowOnpmOnstDefaultdmOff =
|
static const String
|
||||||
|
assetsIconsBatteryDmOffPerOnchargOfflowOnpmOnstDefaultdmOff =
|
||||||
"assets/icons/battery/dmOff/perOnchargOfflowOnpmOnstDefaultdmOff.svg";
|
"assets/icons/battery/dmOff/perOnchargOfflowOnpmOnstDefaultdmOff.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOffPerOnchargOnlowOffpmOffstChargeddmOff
|
/// Assets for assetsIconsBatteryDmOffPerOnchargOnlowOffpmOffstChargeddmOff
|
||||||
/// assets/icons/battery/dmOff/perOnchargOnlowOffpmOffstChargeddmOff.svg
|
/// assets/icons/battery/dmOff/perOnchargOnlowOffpmOffstChargeddmOff.svg
|
||||||
static const String assetsIconsBatteryDmOffPerOnchargOnlowOffpmOffstChargeddmOff =
|
static const String
|
||||||
|
assetsIconsBatteryDmOffPerOnchargOnlowOffpmOffstChargeddmOff =
|
||||||
"assets/icons/battery/dmOff/perOnchargOnlowOffpmOffstChargeddmOff.svg";
|
"assets/icons/battery/dmOff/perOnchargOnlowOffpmOffstChargeddmOff.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOffPerOnchargOnlowOnpmOffstlowBatterydmOff
|
/// Assets for assetsIconsBatteryDmOffPerOnchargOnlowOnpmOffstlowBatterydmOff
|
||||||
/// assets/icons/battery/dmOff/perOnchargOnlowOnpmOffstlowBatterydmOff.svg
|
/// assets/icons/battery/dmOff/perOnchargOnlowOnpmOffstlowBatterydmOff.svg
|
||||||
static const String assetsIconsBatteryDmOffPerOnchargOnlowOnpmOffstlowBatterydmOff =
|
static const String
|
||||||
|
assetsIconsBatteryDmOffPerOnchargOnlowOnpmOffstlowBatterydmOff =
|
||||||
"assets/icons/battery/dmOff/perOnchargOnlowOnpmOffstlowBatterydmOff.svg";
|
"assets/icons/battery/dmOff/perOnchargOnlowOnpmOffstlowBatterydmOff.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOffPerOnchargOnlowOnpmOnstlowpmdmOff
|
/// Assets for assetsIconsBatteryDmOffPerOnchargOnlowOnpmOnstlowpmdmOff
|
||||||
@ -104,37 +121,44 @@ class Assets {
|
|||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOnPerOffchargOfflowOffpmOffstChargeddmOn
|
/// Assets for assetsIconsBatteryDmOnPerOffchargOfflowOffpmOffstChargeddmOn
|
||||||
/// assets/icons/battery/dmOn/perOffchargOfflowOffpmOffstChargeddmOn.svg
|
/// assets/icons/battery/dmOn/perOffchargOfflowOffpmOffstChargeddmOn.svg
|
||||||
static const String assetsIconsBatteryDmOnPerOffchargOfflowOffpmOffstChargeddmOn =
|
static const String
|
||||||
|
assetsIconsBatteryDmOnPerOffchargOfflowOffpmOffstChargeddmOn =
|
||||||
"assets/icons/battery/dmOn/perOffchargOfflowOffpmOffstChargeddmOn.svg";
|
"assets/icons/battery/dmOn/perOffchargOfflowOffpmOffstChargeddmOn.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOnPerOffchargOfflowOffpmOffstDefaultdmOn
|
/// Assets for assetsIconsBatteryDmOnPerOffchargOfflowOffpmOffstDefaultdmOn
|
||||||
/// assets/icons/battery/dmOn/perOffchargOfflowOffpmOffstDefaultdmOn.svg
|
/// assets/icons/battery/dmOn/perOffchargOfflowOffpmOffstDefaultdmOn.svg
|
||||||
static const String assetsIconsBatteryDmOnPerOffchargOfflowOffpmOffstDefaultdmOn =
|
static const String
|
||||||
|
assetsIconsBatteryDmOnPerOffchargOfflowOffpmOffstDefaultdmOn =
|
||||||
"assets/icons/battery/dmOn/perOffchargOfflowOffpmOffstDefaultdmOn.svg";
|
"assets/icons/battery/dmOn/perOffchargOfflowOffpmOffstDefaultdmOn.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOnPerOffchargOfflowOffpmOnstChargeddmOn
|
/// Assets for assetsIconsBatteryDmOnPerOffchargOfflowOffpmOnstChargeddmOn
|
||||||
/// assets/icons/battery/dmOn/perOffchargOfflowOffpmOnstChargeddmOn.svg
|
/// assets/icons/battery/dmOn/perOffchargOfflowOffpmOnstChargeddmOn.svg
|
||||||
static const String assetsIconsBatteryDmOnPerOffchargOfflowOffpmOnstChargeddmOn =
|
static const String
|
||||||
|
assetsIconsBatteryDmOnPerOffchargOfflowOffpmOnstChargeddmOn =
|
||||||
"assets/icons/battery/dmOn/perOffchargOfflowOffpmOnstChargeddmOn.svg";
|
"assets/icons/battery/dmOn/perOffchargOfflowOffpmOnstChargeddmOn.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOnPerOffchargOfflowOnpmOffstDefaultdmOn
|
/// Assets for assetsIconsBatteryDmOnPerOffchargOfflowOnpmOffstDefaultdmOn
|
||||||
/// assets/icons/battery/dmOn/perOffchargOfflowOnpmOffstDefaultdmOn.svg
|
/// assets/icons/battery/dmOn/perOffchargOfflowOnpmOffstDefaultdmOn.svg
|
||||||
static const String assetsIconsBatteryDmOnPerOffchargOfflowOnpmOffstDefaultdmOn =
|
static const String
|
||||||
|
assetsIconsBatteryDmOnPerOffchargOfflowOnpmOffstDefaultdmOn =
|
||||||
"assets/icons/battery/dmOn/perOffchargOfflowOnpmOffstDefaultdmOn.svg";
|
"assets/icons/battery/dmOn/perOffchargOfflowOnpmOffstDefaultdmOn.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOnPerOffchargOfflowOnpmOnstDefaultdmOn
|
/// Assets for assetsIconsBatteryDmOnPerOffchargOfflowOnpmOnstDefaultdmOn
|
||||||
/// assets/icons/battery/dmOn/perOffchargOfflowOnpmOnstDefaultdmOn.svg
|
/// assets/icons/battery/dmOn/perOffchargOfflowOnpmOnstDefaultdmOn.svg
|
||||||
static const String assetsIconsBatteryDmOnPerOffchargOfflowOnpmOnstDefaultdmOn =
|
static const String
|
||||||
|
assetsIconsBatteryDmOnPerOffchargOfflowOnpmOnstDefaultdmOn =
|
||||||
"assets/icons/battery/dmOn/perOffchargOfflowOnpmOnstDefaultdmOn.svg";
|
"assets/icons/battery/dmOn/perOffchargOfflowOnpmOnstDefaultdmOn.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOnPerOffchargOnlowOffpmOffstChargeddmOn
|
/// Assets for assetsIconsBatteryDmOnPerOffchargOnlowOffpmOffstChargeddmOn
|
||||||
/// assets/icons/battery/dmOn/perOffchargOnlowOffpmOffstChargeddmOn.svg
|
/// assets/icons/battery/dmOn/perOffchargOnlowOffpmOffstChargeddmOn.svg
|
||||||
static const String assetsIconsBatteryDmOnPerOffchargOnlowOffpmOffstChargeddmOn =
|
static const String
|
||||||
|
assetsIconsBatteryDmOnPerOffchargOnlowOffpmOffstChargeddmOn =
|
||||||
"assets/icons/battery/dmOn/perOffchargOnlowOffpmOffstChargeddmOn.svg";
|
"assets/icons/battery/dmOn/perOffchargOnlowOffpmOffstChargeddmOn.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOnPerOffchargOnlowOnpmOffstlowBatterydmOn
|
/// Assets for assetsIconsBatteryDmOnPerOffchargOnlowOnpmOffstlowBatterydmOn
|
||||||
/// assets/icons/battery/dmOn/perOffchargOnlowOnpmOffstlowBatterydmOn.svg
|
/// assets/icons/battery/dmOn/perOffchargOnlowOnpmOffstlowBatterydmOn.svg
|
||||||
static const String assetsIconsBatteryDmOnPerOffchargOnlowOnpmOffstlowBatterydmOn =
|
static const String
|
||||||
|
assetsIconsBatteryDmOnPerOffchargOnlowOnpmOffstlowBatterydmOn =
|
||||||
"assets/icons/battery/dmOn/perOffchargOnlowOnpmOffstlowBatterydmOn.svg";
|
"assets/icons/battery/dmOn/perOffchargOnlowOnpmOffstlowBatterydmOn.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOnPerOffchargOnlowOnpmOnstlowpmdmOn
|
/// Assets for assetsIconsBatteryDmOnPerOffchargOnlowOnpmOnstlowpmdmOn
|
||||||
@ -144,37 +168,44 @@ class Assets {
|
|||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOnPerOnchargOfflowOffpmOffstChargeddmOn
|
/// Assets for assetsIconsBatteryDmOnPerOnchargOfflowOffpmOffstChargeddmOn
|
||||||
/// assets/icons/battery/dmOn/perOnchargOfflowOffpmOffstChargeddmOn.svg
|
/// assets/icons/battery/dmOn/perOnchargOfflowOffpmOffstChargeddmOn.svg
|
||||||
static const String assetsIconsBatteryDmOnPerOnchargOfflowOffpmOffstChargeddmOn =
|
static const String
|
||||||
|
assetsIconsBatteryDmOnPerOnchargOfflowOffpmOffstChargeddmOn =
|
||||||
"assets/icons/battery/dmOn/perOnchargOfflowOffpmOffstChargeddmOn.svg";
|
"assets/icons/battery/dmOn/perOnchargOfflowOffpmOffstChargeddmOn.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOnPerOnchargOfflowOffpmOffstDefaultdmOn
|
/// Assets for assetsIconsBatteryDmOnPerOnchargOfflowOffpmOffstDefaultdmOn
|
||||||
/// assets/icons/battery/dmOn/perOnchargOfflowOffpmOffstDefaultdmOn.svg
|
/// assets/icons/battery/dmOn/perOnchargOfflowOffpmOffstDefaultdmOn.svg
|
||||||
static const String assetsIconsBatteryDmOnPerOnchargOfflowOffpmOffstDefaultdmOn =
|
static const String
|
||||||
|
assetsIconsBatteryDmOnPerOnchargOfflowOffpmOffstDefaultdmOn =
|
||||||
"assets/icons/battery/dmOn/perOnchargOfflowOffpmOffstDefaultdmOn.svg";
|
"assets/icons/battery/dmOn/perOnchargOfflowOffpmOffstDefaultdmOn.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOnPerOnchargOfflowOffpmOnstChargeddmOn
|
/// Assets for assetsIconsBatteryDmOnPerOnchargOfflowOffpmOnstChargeddmOn
|
||||||
/// assets/icons/battery/dmOn/perOnchargOfflowOffpmOnstChargeddmOn.svg
|
/// assets/icons/battery/dmOn/perOnchargOfflowOffpmOnstChargeddmOn.svg
|
||||||
static const String assetsIconsBatteryDmOnPerOnchargOfflowOffpmOnstChargeddmOn =
|
static const String
|
||||||
|
assetsIconsBatteryDmOnPerOnchargOfflowOffpmOnstChargeddmOn =
|
||||||
"assets/icons/battery/dmOn/perOnchargOfflowOffpmOnstChargeddmOn.svg";
|
"assets/icons/battery/dmOn/perOnchargOfflowOffpmOnstChargeddmOn.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOnPerOnchargOfflowOnpmOffstDefaultdmOn
|
/// Assets for assetsIconsBatteryDmOnPerOnchargOfflowOnpmOffstDefaultdmOn
|
||||||
/// assets/icons/battery/dmOn/perOnchargOfflowOnpmOffstDefaultdmOn.svg
|
/// assets/icons/battery/dmOn/perOnchargOfflowOnpmOffstDefaultdmOn.svg
|
||||||
static const String assetsIconsBatteryDmOnPerOnchargOfflowOnpmOffstDefaultdmOn =
|
static const String
|
||||||
|
assetsIconsBatteryDmOnPerOnchargOfflowOnpmOffstDefaultdmOn =
|
||||||
"assets/icons/battery/dmOn/perOnchargOfflowOnpmOffstDefaultdmOn.svg";
|
"assets/icons/battery/dmOn/perOnchargOfflowOnpmOffstDefaultdmOn.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOnPerOnchargOfflowOnpmOnstDefaultdmOn
|
/// Assets for assetsIconsBatteryDmOnPerOnchargOfflowOnpmOnstDefaultdmOn
|
||||||
/// assets/icons/battery/dmOn/perOnchargOfflowOnpmOnstDefaultdmOn.svg
|
/// assets/icons/battery/dmOn/perOnchargOfflowOnpmOnstDefaultdmOn.svg
|
||||||
static const String assetsIconsBatteryDmOnPerOnchargOfflowOnpmOnstDefaultdmOn =
|
static const String
|
||||||
|
assetsIconsBatteryDmOnPerOnchargOfflowOnpmOnstDefaultdmOn =
|
||||||
"assets/icons/battery/dmOn/perOnchargOfflowOnpmOnstDefaultdmOn.svg";
|
"assets/icons/battery/dmOn/perOnchargOfflowOnpmOnstDefaultdmOn.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOnPerOnchargOnlowOffpmOffstChargeddmOn
|
/// Assets for assetsIconsBatteryDmOnPerOnchargOnlowOffpmOffstChargeddmOn
|
||||||
/// assets/icons/battery/dmOn/perOnchargOnlowOffpmOffstChargeddmOn.svg
|
/// assets/icons/battery/dmOn/perOnchargOnlowOffpmOffstChargeddmOn.svg
|
||||||
static const String assetsIconsBatteryDmOnPerOnchargOnlowOffpmOffstChargeddmOn =
|
static const String
|
||||||
|
assetsIconsBatteryDmOnPerOnchargOnlowOffpmOffstChargeddmOn =
|
||||||
"assets/icons/battery/dmOn/perOnchargOnlowOffpmOffstChargeddmOn.svg";
|
"assets/icons/battery/dmOn/perOnchargOnlowOffpmOffstChargeddmOn.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOnPerOnchargOnlowOnpmOffstlowBatterydmOn
|
/// Assets for assetsIconsBatteryDmOnPerOnchargOnlowOnpmOffstlowBatterydmOn
|
||||||
/// assets/icons/battery/dmOn/perOnchargOnlowOnpmOffstlowBatterydmOn.svg
|
/// assets/icons/battery/dmOn/perOnchargOnlowOnpmOffstlowBatterydmOn.svg
|
||||||
static const String assetsIconsBatteryDmOnPerOnchargOnlowOnpmOffstlowBatterydmOn =
|
static const String
|
||||||
|
assetsIconsBatteryDmOnPerOnchargOnlowOnpmOffstlowBatterydmOn =
|
||||||
"assets/icons/battery/dmOn/perOnchargOnlowOnpmOffstlowBatterydmOn.svg";
|
"assets/icons/battery/dmOn/perOnchargOnlowOnpmOffstlowBatterydmOn.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsBatteryDmOnPerOnchargOnlowOnpmOnstlowpmdmOn
|
/// Assets for assetsIconsBatteryDmOnPerOnchargOnlowOnpmOnstlowpmdmOn
|
||||||
@ -218,7 +249,8 @@ class Assets {
|
|||||||
static const String assetsIconsCurtainsIconVerticalBlade =
|
static const String assetsIconsCurtainsIconVerticalBlade =
|
||||||
"assets/icons/curtainsIcon/left_vertical_blade.svg";
|
"assets/icons/curtainsIcon/left_vertical_blade.svg";
|
||||||
|
|
||||||
static const String rightVerticalBlade = "assets/icons/curtainsIcon/right_vertical_blade.svg";
|
static const String rightVerticalBlade =
|
||||||
|
"assets/icons/curtainsIcon/right_vertical_blade.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsDashboard
|
/// Assets for assetsIconsDashboard
|
||||||
/// assets/icons/dashboard.svg
|
/// assets/icons/dashboard.svg
|
||||||
@ -228,7 +260,8 @@ class Assets {
|
|||||||
|
|
||||||
/// Assets for assetsIconsDashboardFill
|
/// Assets for assetsIconsDashboardFill
|
||||||
/// assets/icons/dashboard-fill.svg
|
/// assets/icons/dashboard-fill.svg
|
||||||
static const String assetsIconsDashboardFill = "assets/icons/dashboard-fill.svg";
|
static const String assetsIconsDashboardFill =
|
||||||
|
"assets/icons/dashboard-fill.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsDevices
|
/// Assets for assetsIconsDevices
|
||||||
/// assets/icons/Devices.svg
|
/// assets/icons/Devices.svg
|
||||||
@ -244,7 +277,8 @@ class Assets {
|
|||||||
|
|
||||||
/// Assets for assetsIconsDoorLockLinkage
|
/// Assets for assetsIconsDoorLockLinkage
|
||||||
/// assets/icons/DoorLockLinkage.svg
|
/// assets/icons/DoorLockLinkage.svg
|
||||||
static const String assetsIconsDoorLockLinkage = "assets/icons/DoorLockLinkage.svg";
|
static const String assetsIconsDoorLockLinkage =
|
||||||
|
"assets/icons/DoorLockLinkage.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsDoorLockLock
|
/// Assets for assetsIconsDoorLockLock
|
||||||
/// assets/icons/DoorLockLock.svg
|
/// assets/icons/DoorLockLock.svg
|
||||||
@ -252,15 +286,18 @@ class Assets {
|
|||||||
|
|
||||||
/// Assets for assetsIconsDoorLockMembers
|
/// Assets for assetsIconsDoorLockMembers
|
||||||
/// assets/icons/DoorLockMembers.svg
|
/// assets/icons/DoorLockMembers.svg
|
||||||
static const String assetsIconsDoorLockMembers = "assets/icons/DoorLockMembers.svg";
|
static const String assetsIconsDoorLockMembers =
|
||||||
|
"assets/icons/DoorLockMembers.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsDoorLockPassword
|
/// Assets for assetsIconsDoorLockPassword
|
||||||
/// assets/icons/DoorLockPassword.svg
|
/// assets/icons/DoorLockPassword.svg
|
||||||
static const String assetsIconsDoorLockPassword = "assets/icons/DoorLockPassword.svg";
|
static const String assetsIconsDoorLockPassword =
|
||||||
|
"assets/icons/DoorLockPassword.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsDoorLockRecords
|
/// Assets for assetsIconsDoorLockRecords
|
||||||
/// assets/icons/DoorLockRecords.svg
|
/// assets/icons/DoorLockRecords.svg
|
||||||
static const String assetsIconsDoorLockRecords = "assets/icons/DoorLockRecords.svg";
|
static const String assetsIconsDoorLockRecords =
|
||||||
|
"assets/icons/DoorLockRecords.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsDoorlockAssetsBatteryIndicator
|
/// Assets for assetsIconsDoorlockAssetsBatteryIndicator
|
||||||
/// assets/icons/doorlock-assets/BatteryIndicator.svg
|
/// assets/icons/doorlock-assets/BatteryIndicator.svg
|
||||||
@ -281,7 +318,8 @@ class Assets {
|
|||||||
/// assets/icons/doorlock-assets/lockIcon.svg
|
/// assets/icons/doorlock-assets/lockIcon.svg
|
||||||
static const String assetsIconsDoorlockAssetsLockIcon =
|
static const String assetsIconsDoorlockAssetsLockIcon =
|
||||||
"assets/icons/doorlock-assets/lockIcon.svg";
|
"assets/icons/doorlock-assets/lockIcon.svg";
|
||||||
static const String doorUnlockIcon = "assets/icons/doorlock-assets/door_un_look_ic.svg";
|
static const String doorUnlockIcon =
|
||||||
|
"assets/icons/doorlock-assets/door_un_look_ic.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsDoorlockAssetsMembersManagement
|
/// Assets for assetsIconsDoorlockAssetsMembersManagement
|
||||||
/// assets/icons/doorlock-assets/members-management.svg
|
/// assets/icons/doorlock-assets/members-management.svg
|
||||||
@ -369,11 +407,13 @@ class Assets {
|
|||||||
|
|
||||||
/// Assets for assetsIconsLightSwitchOff
|
/// Assets for assetsIconsLightSwitchOff
|
||||||
/// assets/icons/lightSwitchOff.svg
|
/// assets/icons/lightSwitchOff.svg
|
||||||
static const String assetsIconsLightSwitchOff = "assets/icons/lightSwitchOff.svg";
|
static const String assetsIconsLightSwitchOff =
|
||||||
|
"assets/icons/lightSwitchOff.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsLightSwitchOn
|
/// Assets for assetsIconsLightSwitchOn
|
||||||
/// assets/icons/lightSwitchOn.svg
|
/// assets/icons/lightSwitchOn.svg
|
||||||
static const String assetsIconsLightSwitchOn = "assets/icons/lightSwitchOn.svg";
|
static const String assetsIconsLightSwitchOn =
|
||||||
|
"assets/icons/lightSwitchOn.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsLinkageIconsDoorLockAlarm
|
/// Assets for assetsIconsLinkageIconsDoorLockAlarm
|
||||||
/// assets/icons/linkageIcons/doorLockAlarm.svg
|
/// assets/icons/linkageIcons/doorLockAlarm.svg
|
||||||
@ -382,7 +422,8 @@ class Assets {
|
|||||||
|
|
||||||
/// Assets for assetsIconsLinkTimeLimitedPasswordIcon
|
/// Assets for assetsIconsLinkTimeLimitedPasswordIcon
|
||||||
/// assets/icons/timeLimitedPasswordIcon.svg
|
/// assets/icons/timeLimitedPasswordIcon.svg
|
||||||
static const String timeLimitedPasswordIcon = "assets/icons/timeLimitedPasswordIcon.svg";
|
static const String timeLimitedPasswordIcon =
|
||||||
|
"assets/icons/timeLimitedPasswordIcon.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsoneTimePassword
|
/// Assets for assetsIconsoneTimePassword
|
||||||
/// assets/icons/oneTimePassword.svg
|
/// assets/icons/oneTimePassword.svg
|
||||||
@ -390,7 +431,8 @@ class Assets {
|
|||||||
|
|
||||||
/// Assets for assetsIconsTimeLimitedPassword
|
/// Assets for assetsIconsTimeLimitedPassword
|
||||||
/// assets/icons/timeLimitedPassword.svg
|
/// assets/icons/timeLimitedPassword.svg
|
||||||
static const String timeLimitedPassword = "assets/icons/timeLimitedPassword.svg";
|
static const String timeLimitedPassword =
|
||||||
|
"assets/icons/timeLimitedPassword.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsNoValidPasswords
|
/// Assets for assetsIconsNoValidPasswords
|
||||||
/// assets/icons/noValidPasswords.svg
|
/// assets/icons/noValidPasswords.svg
|
||||||
@ -559,11 +601,13 @@ class Assets {
|
|||||||
|
|
||||||
/// Assets for assetsIconsPresenceSensorAssetsParameterSettings
|
/// Assets for assetsIconsPresenceSensorAssetsParameterSettings
|
||||||
/// assets/icons/presence-sensor-assets/space_type_icon.svg
|
/// assets/icons/presence-sensor-assets/space_type_icon.svg
|
||||||
static const String spaceTypeIcon = "assets/icons/presence-sensor-assets/space_type_icon.svg";
|
static const String spaceTypeIcon =
|
||||||
|
"assets/icons/presence-sensor-assets/space_type_icon.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsPresenceSensorAssetsParameterSettings
|
/// Assets for assetsIconsPresenceSensorAssetsParameterSettings
|
||||||
/// assets/icons/presence-sensor-assets/space_type_icon.svg
|
/// assets/icons/presence-sensor-assets/space_type_icon.svg
|
||||||
static const String sensitivityIcon = "assets/icons/presence-sensor-assets/Sensitivity.svg";
|
static const String sensitivityIcon =
|
||||||
|
"assets/icons/presence-sensor-assets/Sensitivity.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsPresenceSensorAssetsParameterSettings
|
/// Assets for assetsIconsPresenceSensorAssetsParameterSettings
|
||||||
/// assets/icons/presence-sensor-assets/maximum_distance.svg
|
/// assets/icons/presence-sensor-assets/maximum_distance.svg
|
||||||
@ -596,7 +640,8 @@ class Assets {
|
|||||||
|
|
||||||
/// Assets for assetsIconsRoutinesFill
|
/// Assets for assetsIconsRoutinesFill
|
||||||
/// assets/icons/Routines-fill.svg
|
/// assets/icons/Routines-fill.svg
|
||||||
static const String assetsIconsRoutinesFill = "assets/icons/Routines-fill.svg";
|
static const String assetsIconsRoutinesFill =
|
||||||
|
"assets/icons/Routines-fill.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsScan
|
/// Assets for assetsIconsScan
|
||||||
/// assets/icons/Scan.svg
|
/// assets/icons/Scan.svg
|
||||||
@ -628,7 +673,8 @@ class Assets {
|
|||||||
|
|
||||||
/// Assets for assetsIconsSustainability
|
/// Assets for assetsIconsSustainability
|
||||||
/// assets/icons/sustainability.svg
|
/// assets/icons/sustainability.svg
|
||||||
static const String assetsIconsSustainability = "assets/icons/sustainability.svg";
|
static const String assetsIconsSustainability =
|
||||||
|
"assets/icons/sustainability.svg";
|
||||||
|
|
||||||
/// Assets for assetsIconsUnlockingMethodsIconsFace
|
/// Assets for assetsIconsUnlockingMethodsIconsFace
|
||||||
/// assets/icons/unlockingMethodsIcons/face.svg
|
/// assets/icons/unlockingMethodsIcons/face.svg
|
||||||
@ -724,7 +770,8 @@ class Assets {
|
|||||||
|
|
||||||
/// Assets for assetsImagesHorizintalBlade
|
/// Assets for assetsImagesHorizintalBlade
|
||||||
/// assets/images/HorizintalBlade.png
|
/// assets/images/HorizintalBlade.png
|
||||||
static const String assetsImagesHorizintalBlade = "assets/images/HorizintalBlade.png";
|
static const String assetsImagesHorizintalBlade =
|
||||||
|
"assets/images/HorizintalBlade.png";
|
||||||
|
|
||||||
/// Assets for assetsImagesLogo
|
/// Assets for assetsImagesLogo
|
||||||
/// assets/images/Logo.svg
|
/// assets/images/Logo.svg
|
||||||
@ -732,7 +779,8 @@ class Assets {
|
|||||||
|
|
||||||
/// Assets for assetsImagesLogoHorizontal
|
/// Assets for assetsImagesLogoHorizontal
|
||||||
/// assets/images/logo_horizontal.png
|
/// assets/images/logo_horizontal.png
|
||||||
static const String assetsImagesLogoHorizontal = "assets/images/logo_horizontal.png";
|
static const String assetsImagesLogoHorizontal =
|
||||||
|
"assets/images/logo_horizontal.png";
|
||||||
|
|
||||||
/// Assets for assetsImagesPause
|
/// Assets for assetsImagesPause
|
||||||
/// assets/images/Pause.png
|
/// assets/images/Pause.png
|
||||||
@ -762,7 +810,8 @@ class Assets {
|
|||||||
/// assets/images/Window.png
|
/// assets/images/Window.png
|
||||||
static const String assetsImagesWindow = "assets/images/window_img.svg";
|
static const String assetsImagesWindow = "assets/images/window_img.svg";
|
||||||
|
|
||||||
static const String assetsSensitivityFunction = "assets/icons/functions_icons/sensitivity.svg";
|
static const String assetsSensitivityFunction =
|
||||||
|
"assets/icons/functions_icons/sensitivity.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/sesitivity_operation_icon.svg
|
//assets/icons/functions_icons/sesitivity_operation_icon.svg
|
||||||
static const String assetsSensitivityOperationIcon =
|
static const String assetsSensitivityOperationIcon =
|
||||||
@ -770,59 +819,73 @@ class Assets {
|
|||||||
|
|
||||||
//assets/icons/functions_icons/ac_power.svg
|
//assets/icons/functions_icons/ac_power.svg
|
||||||
|
|
||||||
static const String assetsAcPower = "assets/icons/functions_icons/ac_power.svg";
|
static const String assetsAcPower =
|
||||||
|
"assets/icons/functions_icons/ac_power.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/ac_power_off.svg
|
//assets/icons/functions_icons/ac_power_off.svg
|
||||||
|
|
||||||
static const String assetsAcPowerOFF = "assets/icons/functions_icons/ac_power_off.svg";
|
static const String assetsAcPowerOFF =
|
||||||
|
"assets/icons/functions_icons/ac_power_off.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/child_lock.svg
|
//assets/icons/functions_icons/child_lock.svg
|
||||||
|
|
||||||
static const String assetsChildLock = "assets/icons/functions_icons/child_lock.svg";
|
static const String assetsChildLock =
|
||||||
|
"assets/icons/functions_icons/child_lock.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/cooling.svg
|
//assets/icons/functions_icons/cooling.svg
|
||||||
|
|
||||||
static const String assetsFreezing = "assets/icons/functions_icons/freezing.svg";
|
static const String assetsFreezing =
|
||||||
|
"assets/icons/functions_icons/freezing.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/fan_speed.svg
|
//assets/icons/functions_icons/fan_speed.svg
|
||||||
|
|
||||||
static const String assetsFanSpeed = "assets/icons/functions_icons/fan_speed.svg";
|
static const String assetsFanSpeed =
|
||||||
|
"assets/icons/functions_icons/fan_speed.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/ac_cooling.svg
|
//assets/icons/functions_icons/ac_cooling.svg
|
||||||
|
|
||||||
static const String assetsAcCooling = "assets/icons/functions_icons/ac_cooling.svg";
|
static const String assetsAcCooling =
|
||||||
|
"assets/icons/functions_icons/ac_cooling.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/ac_heating.svg
|
//assets/icons/functions_icons/ac_heating.svg
|
||||||
|
|
||||||
static const String assetsAcHeating = "assets/icons/functions_icons/ac_heating.svg";
|
static const String assetsAcHeating =
|
||||||
|
"assets/icons/functions_icons/ac_heating.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/celsius_degrees.svg
|
//assets/icons/functions_icons/celsius_degrees.svg
|
||||||
|
|
||||||
static const String assetsCelsiusDegrees = "assets/icons/functions_icons/celsius_degrees.svg";
|
static const String assetsCelsiusDegrees =
|
||||||
|
"assets/icons/functions_icons/celsius_degrees.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/tempreture.svg
|
//assets/icons/functions_icons/tempreture.svg
|
||||||
|
|
||||||
static const String assetsTempreture = "assets/icons/functions_icons/tempreture.svg";
|
static const String assetsTempreture =
|
||||||
|
"assets/icons/functions_icons/tempreture.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/ac_fan_low.svg
|
//assets/icons/functions_icons/ac_fan_low.svg
|
||||||
|
|
||||||
static const String assetsAcFanLow = "assets/icons/functions_icons/ac_fan_low.svg";
|
static const String assetsAcFanLow =
|
||||||
|
"assets/icons/functions_icons/ac_fan_low.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/ac_fan_middle.svg
|
//assets/icons/functions_icons/ac_fan_middle.svg
|
||||||
|
|
||||||
static const String assetsAcFanMiddle = "assets/icons/functions_icons/ac_fan_middle.svg";
|
static const String assetsAcFanMiddle =
|
||||||
|
"assets/icons/functions_icons/ac_fan_middle.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/ac_fan_high.svg
|
//assets/icons/functions_icons/ac_fan_high.svg
|
||||||
|
|
||||||
static const String assetsAcFanHigh = "assets/icons/functions_icons/ac_fan_high.svg";
|
static const String assetsAcFanHigh =
|
||||||
|
"assets/icons/functions_icons/ac_fan_high.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/ac_fan_auto.svg
|
//assets/icons/functions_icons/ac_fan_auto.svg
|
||||||
|
|
||||||
static const String assetsAcFanAuto = "assets/icons/functions_icons/ac_fan_auto.svg";
|
static const String assetsAcFanAuto =
|
||||||
|
"assets/icons/functions_icons/ac_fan_auto.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/scene_child_lock.svg
|
//assets/icons/functions_icons/scene_child_lock.svg
|
||||||
|
|
||||||
static const String assetsSceneChildLock = "assets/icons/functions_icons/scene_child_lock.svg";
|
static const String assetsSceneChildLock =
|
||||||
|
"assets/icons/functions_icons/scene_child_lock.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/scene_child_unlock.svg
|
//assets/icons/functions_icons/scene_child_unlock.svg
|
||||||
|
|
||||||
@ -831,15 +894,18 @@ class Assets {
|
|||||||
|
|
||||||
//assets/icons/functions_icons/scene_refresh.svg
|
//assets/icons/functions_icons/scene_refresh.svg
|
||||||
|
|
||||||
static const String assetsSceneRefresh = "assets/icons/functions_icons/scene_refresh.svg";
|
static const String assetsSceneRefresh =
|
||||||
|
"assets/icons/functions_icons/scene_refresh.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/light_countdown.svg
|
//assets/icons/functions_icons/light_countdown.svg
|
||||||
|
|
||||||
static const String assetsLightCountdown = "assets/icons/functions_icons/light_countdown.svg";
|
static const String assetsLightCountdown =
|
||||||
|
"assets/icons/functions_icons/light_countdown.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/far_detection.svg
|
//assets/icons/functions_icons/far_detection.svg
|
||||||
|
|
||||||
static const String assetsFarDetection = "assets/icons/functions_icons/far_detection.svg";
|
static const String assetsFarDetection =
|
||||||
|
"assets/icons/functions_icons/far_detection.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/far_detection_function.svg
|
//assets/icons/functions_icons/far_detection_function.svg
|
||||||
|
|
||||||
@ -848,11 +914,13 @@ class Assets {
|
|||||||
|
|
||||||
//assets/icons/functions_icons/indicator.svg
|
//assets/icons/functions_icons/indicator.svg
|
||||||
|
|
||||||
static const String assetsIndicator = "assets/icons/functions_icons/indicator.svg";
|
static const String assetsIndicator =
|
||||||
|
"assets/icons/functions_icons/indicator.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/motion_detection.svg
|
//assets/icons/functions_icons/motion_detection.svg
|
||||||
|
|
||||||
static const String assetsMotionDetection = "assets/icons/functions_icons/motion_detection.svg";
|
static const String assetsMotionDetection =
|
||||||
|
"assets/icons/functions_icons/motion_detection.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/motionless_detection.svg
|
//assets/icons/functions_icons/motionless_detection.svg
|
||||||
|
|
||||||
@ -861,15 +929,18 @@ class Assets {
|
|||||||
|
|
||||||
//assets/icons/functions_icons/nobody_time.svg
|
//assets/icons/functions_icons/nobody_time.svg
|
||||||
|
|
||||||
static const String assetsNobodyTime = "assets/icons/functions_icons/nobody_time.svg";
|
static const String assetsNobodyTime =
|
||||||
|
"assets/icons/functions_icons/nobody_time.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/factory_reset.svg
|
//assets/icons/functions_icons/factory_reset.svg
|
||||||
|
|
||||||
static const String assetsFactoryReset = "assets/icons/functions_icons/factory_reset.svg";
|
static const String assetsFactoryReset =
|
||||||
|
"assets/icons/functions_icons/factory_reset.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/master_state.svg
|
//assets/icons/functions_icons/master_state.svg
|
||||||
|
|
||||||
static const String assetsMasterState = "assets/icons/functions_icons/master_state.svg";
|
static const String assetsMasterState =
|
||||||
|
"assets/icons/functions_icons/master_state.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/switch_alarm_sound.svg
|
//assets/icons/functions_icons/switch_alarm_sound.svg
|
||||||
|
|
||||||
@ -878,7 +949,8 @@ class Assets {
|
|||||||
|
|
||||||
//assets/icons/functions_icons/reset_off.svg
|
//assets/icons/functions_icons/reset_off.svg
|
||||||
|
|
||||||
static const String assetsResetOff = "assets/icons/functions_icons/reset_off.svg";
|
static const String assetsResetOff =
|
||||||
|
"assets/icons/functions_icons/reset_off.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/automation_functions/card_unlock.svg
|
//assets/icons/functions_icons/automation_functions/card_unlock.svg
|
||||||
|
|
||||||
@ -952,7 +1024,8 @@ class Assets {
|
|||||||
|
|
||||||
//assets/icons/functions_icons/automation_functions/motion.svg
|
//assets/icons/functions_icons/automation_functions/motion.svg
|
||||||
|
|
||||||
static const String assetsMotion = "assets/icons/functions_icons/automation_functions/motion.svg";
|
static const String assetsMotion =
|
||||||
|
"assets/icons/functions_icons/automation_functions/motion.svg";
|
||||||
|
|
||||||
//assets/icons/functions_icons/automation_functions/current_temp.svg
|
//assets/icons/functions_icons/automation_functions/current_temp.svg
|
||||||
|
|
||||||
@ -974,22 +1047,33 @@ class Assets {
|
|||||||
static const String waterHeaterOn = "assets/icons/water_heater_on.svg";
|
static const String waterHeaterOn = "assets/icons/water_heater_on.svg";
|
||||||
static const String waterHeaterOff = "assets/icons/water_heater_off.svg";
|
static const String waterHeaterOff = "assets/icons/water_heater_off.svg";
|
||||||
|
|
||||||
static const String scheduleCelenderIcon = "assets/icons/schedule_celender_icon.svg";
|
static const String scheduleCelenderIcon =
|
||||||
static const String scheduleCirculateIcon = "assets/icons/schedule_circulate_icon.svg";
|
"assets/icons/schedule_celender_icon.svg";
|
||||||
static const String scheduleInchingIcon = "assets/icons/schedule_Inching_icon.svg";
|
static const String scheduleCirculateIcon =
|
||||||
|
"assets/icons/schedule_circulate_icon.svg";
|
||||||
|
static const String scheduleInchingIcon =
|
||||||
|
"assets/icons/schedule_Inching_icon.svg";
|
||||||
static const String scheduleTimeIcon = "assets/icons/schedule_time_icon.svg";
|
static const String scheduleTimeIcon = "assets/icons/schedule_time_icon.svg";
|
||||||
static const String waterHeaterIcon = "assets/icons/water_heater_icon.svg";
|
static const String waterHeaterIcon = "assets/icons/water_heater_icon.svg";
|
||||||
|
|
||||||
static const String doorOpen = "assets/icons/opened_door.svg";
|
static const String doorOpen = "assets/icons/opened_door.svg";
|
||||||
static const String doorClose = "assets/icons/closed_door.svg";
|
static const String doorClose = "assets/icons/closed_door.svg";
|
||||||
static const String doorNotificationSetting = "assets/icons/door_notification_setting_icon.svg";
|
static const String doorNotificationSetting =
|
||||||
|
"assets/icons/door_notification_setting_icon.svg";
|
||||||
static const String doorRecordsIcon = "assets/icons/door_records_icon.svg";
|
static const String doorRecordsIcon = "assets/icons/door_records_icon.svg";
|
||||||
static const String doorSensorIcon = "assets/icons/door_sensor_icon.svg";
|
static const String doorSensorIcon = "assets/icons/door_sensor_icon.svg";
|
||||||
static const String closedGarageIcon = "assets/icons/closed_garage_door.svg";
|
static const String closedGarageIcon = "assets/icons/closed_garage_door.svg";
|
||||||
static const String openGarageIcon = "assets/icons/open_garage_door.svg";
|
static const String openGarageIcon = "assets/icons/open_garage_door.svg";
|
||||||
static const String garageCountdown = "assets/icons/garage_countdown.svg";
|
static const String garageCountdown = "assets/icons/garage_countdown.svg";
|
||||||
static const String garagePreferencesIcon = "assets/icons/garage_preferences_icon.svg";
|
static const String garagePreferencesIcon =
|
||||||
|
"assets/icons/garage_preferences_icon.svg";
|
||||||
static const String garageSchedule = "assets/icons/garage_schedule.svg";
|
static const String garageSchedule = "assets/icons/garage_schedule.svg";
|
||||||
|
|
||||||
static const String garageIcon = "assets/icons/garageIcon.svg";
|
static const String garageIcon = "assets/icons/garageIcon.svg";
|
||||||
|
|
||||||
|
static const String normalWaterLeak = "assets/icons/normal_water_leak.svg";
|
||||||
|
static const String detectedWaterLeak =
|
||||||
|
"assets/icons/detected_water_leak.svg";
|
||||||
|
|
||||||
|
static const String waterLeakIcon = "assets/icons/waterleak_icon.svg";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -54,6 +54,7 @@ enum DeviceType {
|
|||||||
TowTouch,
|
TowTouch,
|
||||||
ThreeTouch,
|
ThreeTouch,
|
||||||
GarageDoor,
|
GarageDoor,
|
||||||
|
WaterLeak,
|
||||||
|
|
||||||
Other,
|
Other,
|
||||||
}
|
}
|
||||||
@ -85,6 +86,7 @@ Map<String, DeviceType> devicesTypesMap = {
|
|||||||
"2GT": DeviceType.TowTouch,
|
"2GT": DeviceType.TowTouch,
|
||||||
"3GT": DeviceType.ThreeTouch,
|
"3GT": DeviceType.ThreeTouch,
|
||||||
"GD": DeviceType.GarageDoor,
|
"GD": DeviceType.GarageDoor,
|
||||||
|
"WL": DeviceType.WaterLeak,
|
||||||
};
|
};
|
||||||
Map<DeviceType, List<FunctionModel>> devicesFunctionsMap = {
|
Map<DeviceType, List<FunctionModel>> devicesFunctionsMap = {
|
||||||
DeviceType.AC: [
|
DeviceType.AC: [
|
||||||
@ -468,6 +470,7 @@ Map<DeviceType, List<FunctionModel>> devicesFunctionsMap = {
|
|||||||
"range": ["unclosed_time", "close_time_alarm", "none"]
|
"range": ["unclosed_time", "close_time_alarm", "none"]
|
||||||
})),
|
})),
|
||||||
],
|
],
|
||||||
|
DeviceType.WaterLeak: [],
|
||||||
};
|
};
|
||||||
|
|
||||||
enum TempModes { hot, cold, wind }
|
enum TempModes { hot, cold, wind }
|
||||||
|
|||||||
@ -5,7 +5,7 @@ description: This is the mobile application project, developed with Flutter for
|
|||||||
# pub.dev using `flutter pub publish`. This is preferred for private packages.
|
# pub.dev using `flutter pub publish`. This is preferred for private packages.
|
||||||
publish_to: "none" # Remove this line if you wish to publish to pub.dev
|
publish_to: "none" # Remove this line if you wish to publish to pub.dev
|
||||||
|
|
||||||
version: 1.0.3+25
|
version: 1.0.3+26
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=3.0.6 <4.0.0"
|
sdk: ">=3.0.6 <4.0.0"
|
||||||
|
|||||||
Reference in New Issue
Block a user