Files
reverse_nn/lib/widgets/schedule_element_widget.dart
2024-12-16 00:38:18 +03:00

94 lines
3.0 KiB
Dart

import 'package:flutter/material.dart';
import 'package:reverse_nn/enums/direction.dart';
import 'package:reverse_nn/enums/schedule.dart';
import 'package:sprintf/sprintf.dart';
class CurrentReversWidget extends StatelessWidget {
const CurrentReversWidget({super.key, required this.scheduleElement});
final ScheduleElement scheduleElement;
IconData _getIconData() {
switch(scheduleElement.direction) {
case Direction.inCity: return Icons.arrow_upward;
case Direction.outCity: return Icons.arrow_downward;
case Direction.change: return Icons.cancel_outlined;
}
}
@override
Widget build(BuildContext context) {
return Container(
padding: const EdgeInsets.all(16.0),
decoration: BoxDecoration(
borderRadius: const BorderRadius.all(Radius.circular(8.0)),
color: Theme.of(context).colorScheme.primaryContainer
),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Icon(_getIconData(), size: 56.0),
const SizedBox(width: 10),
Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('Реверс: ${scheduleElement.direction.displayName}', style: const TextStyle(fontSize: 20)),
Text('${scheduleElement.getStartedTimeString()} - ${scheduleElement.getEndedTimeString()}', style: const TextStyle(fontSize: 36)),
],
)
],
),
// child: Column(
// mainAxisAlignment: MainAxisAlignment.start,
// crossAxisAlignment: CrossAxisAlignment.center,
// children: [
// const Text('Текущий статус реверса:', style: TextStyle(
// color: Colors.black87,
// fontSize: 14.0
// )),
// Text(scheduleElement.direction.displayName, style: const TextStyle(
// color: Colors.black,
// fontSize: 32.0
// ),),
// ],
// ),
);
}
}
class ScheduledReversWidget extends StatelessWidget {
const ScheduledReversWidget({super.key, required this.scheduleElement});
final ScheduleElement scheduleElement;
@override
Widget build(BuildContext context) {
return Container(
padding: const EdgeInsets.all(8),
margin: const EdgeInsets.symmetric(horizontal: 8),
decoration: BoxDecoration(
borderRadius: const BorderRadius.all(Radius.circular(8.0)),
color: Theme.of(context).colorScheme.secondaryContainer
),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
Text(sprintf('Следующий статус в %02i:%02i - %s', [
scheduleElement.startHours,
scheduleElement.startMinutes,
scheduleElement.direction.displayName
])),
],
),
);
}
}