water heater and timer and schedule ui and api ,

Circulate ui and Inching ui
This commit is contained in:
mohammad
2024-09-21 08:28:29 +03:00
parent 54cce48b89
commit 64e2ba2fd9
4 changed files with 48 additions and 30 deletions

View File

@ -11,6 +11,7 @@ import 'package:syncrow_app/features/devices/model/status_model.dart';
import 'package:syncrow_app/features/devices/model/water_heater.dart'; import 'package:syncrow_app/features/devices/model/water_heater.dart';
import 'package:syncrow_app/services/api/devices_api.dart'; import 'package:syncrow_app/services/api/devices_api.dart';
import 'package:syncrow_app/utils/helpers/snack_bar.dart'; import 'package:syncrow_app/utils/helpers/snack_bar.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
class WaterHeaterBloc extends Bloc<WaterHeaterEvent, WaterHeaterState> { class WaterHeaterBloc extends Bloc<WaterHeaterEvent, WaterHeaterState> {
final String whId; final String whId;
@ -48,6 +49,7 @@ class WaterHeaterBloc extends Bloc<WaterHeaterEvent, WaterHeaterState> {
on<DeleteScheduleEvent>(deleteSchedule); on<DeleteScheduleEvent>(deleteSchedule);
on<TickTimer>(_onTickTimer); on<TickTimer>(_onTickTimer);
on<OnClose>(_onClose); on<OnClose>(_onClose);
on<SelectTimeEvent>(showTime);
} }
void _fetchWaterHeaterStatus(WaterHeaterInitial event, Emitter<WaterHeaterState> emit) async { void _fetchWaterHeaterStatus(WaterHeaterInitial event, Emitter<WaterHeaterState> emit) async {
@ -309,26 +311,26 @@ class WaterHeaterBloc extends Bloc<WaterHeaterEvent, WaterHeaterState> {
emit(ChangeSlidingSegmentState(value: selectedTabIndex)); emit(ChangeSlidingSegmentState(value: selectedTabIndex));
} }
// showTime(){ showTime(SelectTimeEvent event, Emitter<WaterHeaterState> emit) async {
// final TimeOfDay? timePicked = await showTimePicker( final TimeOfDay? timePicked = await showTimePicker(
// context: event.context, context: event.context,
// initialTime: TimeOfDay.now(), initialTime: TimeOfDay.now(),
// builder: (context, child) { builder: (context, child) {
// return Theme( return Theme(
// data: ThemeData.light().copyWith( data: ThemeData.light().copyWith(
// colorScheme: const ColorScheme.light( colorScheme: const ColorScheme.light(
// primary: ColorsManager.primaryColor, primary: ColorsManager.primaryColor,
// onSurface: Colors.black, onSurface: Colors.black,
// ), ),
// buttonTheme: const ButtonThemeData( buttonTheme: const ButtonThemeData(
// colorScheme: ColorScheme.light( colorScheme: ColorScheme.light(
// primary: Colors.green, primary: Colors.green,
// ), ),
// ), ),
// ), ),
// child: child!, child: child!,
// ); );
// }, },
// ); );
// } }
} }

View File

@ -1,4 +1,5 @@
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import 'package:flutter/material.dart';
import 'package:syncrow_app/utils/resource_manager/constants.dart'; import 'package:syncrow_app/utils/resource_manager/constants.dart';
abstract class WaterHeaterEvent extends Equatable { abstract class WaterHeaterEvent extends Equatable {
@ -91,3 +92,11 @@ class DeleteScheduleEvent extends WaterHeaterEvent {
@override @override
List<Object> get props => [id]; List<Object> get props => [id];
} }
class SelectTimeEvent extends WaterHeaterEvent {
final BuildContext context;
final bool isEffective;
const SelectTimeEvent({required this.context, required this.isEffective});
@override
List<Object> get props => [context, isEffective];
}

View File

@ -18,7 +18,8 @@ class CirculateWidget extends StatelessWidget {
final Function(bool) onToggleStartEndTime; final Function(bool) onToggleStartEndTime;
final Function(DateTime, bool) onTimeChanged; final Function(DateTime, bool) onTimeChanged;
final Function(String) onDaySelected; final Function(String) onDaySelected;
final Function()? endDuration;
final Function()? startDuration;
const CirculateWidget({ const CirculateWidget({
Key? key, Key? key,
required this.isStartEndTime, required this.isStartEndTime,
@ -29,6 +30,8 @@ class CirculateWidget extends StatelessWidget {
required this.onToggleStartEndTime, required this.onToggleStartEndTime,
required this.onTimeChanged, required this.onTimeChanged,
required this.onDaySelected, required this.onDaySelected,
required this.endDuration,
required this.startDuration,
}) : super(key: key); }) : super(key: key);
@override @override
@ -130,9 +133,7 @@ class CirculateWidget extends StatelessWidget {
Column( Column(
children: [ children: [
InkWell( InkWell(
onTap: () { onTap: startDuration,
},
child: const Padding( child: const Padding(
padding: EdgeInsets.all(8.0), padding: EdgeInsets.all(8.0),
child: Row( child: Row(
@ -150,9 +151,7 @@ class CirculateWidget extends StatelessWidget {
), ),
const Divider(color: ColorsManager.graysColor,), const Divider(color: ColorsManager.graysColor,),
InkWell( InkWell(
onTap: () { onTap: endDuration,
},
child: const Padding( child: const Padding(
padding: EdgeInsets.all(8.0), padding: EdgeInsets.all(8.0),
child: Row( child: Row(

View File

@ -364,13 +364,21 @@ class WHTimerScheduleScreen extends StatelessWidget {
waterHeaterBloc.createCirculate == true waterHeaterBloc.createCirculate == true
? ?
CirculateWidget( CirculateWidget(
endDuration: () {
waterHeaterBloc.add(SelectTimeEvent(context: context, isEffective: false));
},
startDuration: () {
waterHeaterBloc.add(SelectTimeEvent(context: context, isEffective: false));
},
isStartEndTime: true, isStartEndTime: true,
startTime: DateTime.now(), startTime: DateTime.now(),
endTime: DateTime.now(), endTime: DateTime.now(),
days: waterHeaterBloc.days, days: waterHeaterBloc.days,
selectedDays: [], selectedDays: [],
onToggleStartEndTime: (c) {}, onToggleStartEndTime: (c) {},
onTimeChanged: (x, f) {}, onTimeChanged: (x, f) {
},
onDaySelected: (p0) {}, onDaySelected: (p0) {},
):CirculateListView( ):CirculateListView(
listSchedule: waterHeaterBloc.listSchedule, // Pass the schedule list here listSchedule: waterHeaterBloc.listSchedule, // Pass the schedule list here