Add scheduling functionality to device control views with dialog integration

This commit is contained in:
mohammad
2025-06-19 10:49:06 +03:00
parent 3d95f2bef0
commit d895ed74d2
6 changed files with 342 additions and 34 deletions

View File

@ -1,11 +1,17 @@
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_svg/svg.dart';
import 'package:syncrow_web/pages/device_managment/schedule_device/schedule_widgets/schedual_view.dart';
import 'package:syncrow_web/pages/device_managment/shared/device_controls_container.dart';
import 'package:syncrow_web/pages/device_managment/shared/toggle_widget.dart';
import 'package:syncrow_web/pages/device_managment/two_gang_switch/bloc/two_gang_switch_bloc.dart';
import 'package:syncrow_web/pages/device_managment/two_gang_switch/bloc/two_gang_switch_event.dart';
import 'package:syncrow_web/pages/device_managment/two_gang_switch/bloc/two_gang_switch_state.dart';
import 'package:syncrow_web/pages/device_managment/two_gang_switch/factories/two_gang_switch_bloc_factory.dart';
import 'package:syncrow_web/pages/device_managment/two_gang_switch/models/two_gang_status_model.dart';
import 'package:syncrow_web/utils/color_manager.dart';
import 'package:syncrow_web/utils/constants/assets.dart';
import 'package:syncrow_web/utils/extension/build_context_x.dart';
import 'package:syncrow_web/utils/helpers/responsice_layout_helper/responsive_layout_helper.dart';
class TwoGangDeviceControlView extends StatelessWidget
@ -44,6 +50,7 @@ class TwoGangDeviceControlView extends StatelessWidget
children: [
SizedBox(
width: 200,
height: 120,
child: ToggleWidget(
value: status.switch1,
code: 'switch_1',
@ -60,6 +67,7 @@ class TwoGangDeviceControlView extends StatelessWidget
),
SizedBox(
width: 200,
height: 120,
child: ToggleWidget(
value: status.switch2,
code: 'switch_2',
@ -74,6 +82,54 @@ class TwoGangDeviceControlView extends StatelessWidget
},
),
),
SizedBox(
width: 200,
height: 120,
child: GestureDetector(
onTap: () {
showDialog(
context: context,
builder: (ctx) => BlocProvider.value(
value: BlocProvider.of<TwoGangSwitchBloc>(context),
child: BuildScheduleView(
deviceUuid: deviceId,
),
));
},
child: DeviceControlsContainer(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Container(
width: 60,
height: 60,
decoration: const BoxDecoration(
shape: BoxShape.circle,
color: ColorsManager.whiteColors,
),
margin: const EdgeInsets.symmetric(horizontal: 4),
padding: const EdgeInsets.all(12),
child: ClipOval(
child: SvgPicture.asset(
Assets.scheduling,
fit: BoxFit.fill,
),
),
),
const Spacer(),
Text(
'Scheduling',
textAlign: TextAlign.center,
style: context.textTheme.titleMedium!.copyWith(
fontWeight: FontWeight.w400,
color: ColorsManager.blackColor,
),
),
],
),
),
),
)
],
),
);