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/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!,
|
||||||
// );
|
);
|
||||||
// },
|
},
|
||||||
// );
|
);
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
@ -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];
|
||||||
|
}
|
@ -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(
|
||||||
|
@ -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
|
||||||
|
Reference in New Issue
Block a user