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

View File

@ -1,4 +1,5 @@
import 'package:equatable/equatable.dart';
import 'package:flutter/material.dart';
import 'package:syncrow_app/utils/resource_manager/constants.dart';
abstract class WaterHeaterEvent extends Equatable {
@ -91,3 +92,11 @@ class DeleteScheduleEvent extends WaterHeaterEvent {
@override
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(DateTime, bool) onTimeChanged;
final Function(String) onDaySelected;
final Function()? endDuration;
final Function()? startDuration;
const CirculateWidget({
Key? key,
required this.isStartEndTime,
@ -29,6 +30,8 @@ class CirculateWidget extends StatelessWidget {
required this.onToggleStartEndTime,
required this.onTimeChanged,
required this.onDaySelected,
required this.endDuration,
required this.startDuration,
}) : super(key: key);
@override
@ -130,9 +133,7 @@ class CirculateWidget extends StatelessWidget {
Column(
children: [
InkWell(
onTap: () {
},
onTap: startDuration,
child: const Padding(
padding: EdgeInsets.all(8.0),
child: Row(
@ -150,9 +151,7 @@ class CirculateWidget extends StatelessWidget {
),
const Divider(color: ColorsManager.graysColor,),
InkWell(
onTap: () {
},
onTap: endDuration,
child: const Padding(
padding: EdgeInsets.all(8.0),
child: Row(

View File

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