mirror of
https://github.com/SyncrowIOT/syncrow-app.git
synced 2025-08-26 07:49:40 +00:00
water heater and timer and schedule ui and api ,
Circulate ui and Inching ui
This commit is contained in:
@ -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!,
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -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];
|
||||
}
|
@ -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(
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user