Files
syncrow-app/lib/features/scene/widgets/alert_dialog_temperature_body.dart
2024-06-26 20:32:34 +03:00

95 lines
3.0 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:syncrow_app/features/scene/bloc/create_scene/create_scene_bloc.dart';
import 'package:syncrow_app/features/scene/model/scene_static_function.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/body_large.dart';
import 'package:syncrow_app/features/shared_widgets/text_widgets/title_medium.dart';
import 'package:syncrow_app/generated/assets.dart';
import 'package:syncrow_app/utils/context_extension.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
class AlertDialogTemperatureBody extends StatefulWidget {
const AlertDialogTemperatureBody({
super.key,
required this.index,
required this.functions,
});
final List<SceneStaticFunction> functions;
final int index;
@override
State<AlertDialogTemperatureBody> createState() =>
_AlertDialogTemperatureBodyState();
}
class _AlertDialogTemperatureBodyState
extends State<AlertDialogTemperatureBody> {
int temperature = 24;
@override
Widget build(BuildContext context) {
return ListTile(
contentPadding: const EdgeInsets.symmetric(horizontal: 32),
leading: IconButton(
onPressed: () {
setState(() {
if (temperature > 20) {
temperature--;
}
});
context
.read<CreateSceneBloc>()
.add(SelectedValueEvent(value: temperature.toString()));
},
icon: const Icon(
Icons.remove,
size: 32,
color: ColorsManager.greyColor,
)),
title: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
TitleMedium(
text: temperature.toString(),
style: context.titleMedium.copyWith(
color: ColorsManager.primaryColorWithOpacity,
fontSize: 30,
)),
const SizedBox(width: 4),
Padding(
padding: const EdgeInsets.only(bottom: 8.0),
child: SvgPicture.asset(
Assets.assetsCelsiusDegrees,
alignment: Alignment.topCenter,
width: 32,
),
),
],
),
subtitle: BodyLarge(
text: widget.functions[widget.index].operationalValues[0].value,
textAlign: TextAlign.center,
),
trailing: IconButton(
onPressed: () {
setState(() {
if (temperature < 30) {
temperature++;
}
});
context
.read<CreateSceneBloc>()
.add(SelectedValueEvent(value: temperature.toString()));
},
icon: const Icon(
Icons.add,
size: 32,
color: ColorsManager.greyColor,
)),
);
}
}