Mitgliederladen/Frontend-user/lib/refsem

170 lines
6 KiB
Text
Raw Normal View History

2023-06-12 23:06:20 +02:00
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:intl/intl.dart';
import 'main.dart';
import 'studierendenausweis.dart';
class ShowSemester extends StatefulWidget {
final bool isWinter;
final DateTime now;
const ShowSemester(this.isWinter, this.now, {super.key});
@override
State<ShowSemester> createState() => _ShowSemester();
}
class _ShowSemester extends State<ShowSemester> with TickerProviderStateMixin {
late final controller = AnimationController(
duration: const Duration(seconds: 6),
vsync: this,
)..repeat(reverse: true);
@override
Widget build(BuildContext context) {
bool isWinter = widget.isWinter;
final now = widget.now;
final format = DateFormat("dd.MM.yyyy", 'de_DE');
final beginning = isWinter
? now.month > 6
? '01.10.${now.year}'
: '01.10.${now.year - 1}'
: '01.04.${now.year}';
final validFrom = isWinter
? now.month != DateTime.september
? format.format(now)
: '01.10.${now.year}'
: now.month != DateTime.march
? format.format(now)
: '01.04.${now.year}';
final ending = isWinter
? now.month > 6
? '31.03.${now.year + 1}'
: '31.03.${now.year}'
: '30.09.${now.year}';
return Scaffold(
appBar: AppBar(
title: const Text('Ihre Karte'),
),
body: ListView(
padding:
const EdgeInsets.only(top: 8, bottom: 8, left: 16, right: 16),
children: [
Row(
crossAxisAlignment: CrossAxisAlignment.baseline,
textBaseline: TextBaseline.ideographic,
children: [
SvgPicture.asset('assets/RMV_logo.svg',
height: 16, fit: BoxFit.fitHeight),
Text(
' 01 - ${Ticket().matrikel} - 001',
style: TextStyle(height: 0),
)
],
),
Text('$validFrom / 00:00'),
Padding(
padding: const EdgeInsets.all(8.0),
child: Image.asset(Ticket().picture),
),
Text('${Ticket().vorname} ${Ticket().nachname}'),
const Text(
'Ausweis: digitaler Studierendenausweis',
style: TextStyle(fontSize: 12),
),
const SizedBox(height: 12),
const Text('RMV-HandyTicket'),
const Text(
'SemesterTicket JGU Mainz',
style: TextStyle(fontSize: 18, fontWeight: FontWeight.w700),
),
const SizedBox(height: 16),
Row(
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: const [
Text('Gültig von: '),
Text('Gültig bis: '),
Text('Semester: '),
Text('Ticket-ID: '),
],
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(validFrom),
Text(ending),
Text(isWinter
? 'WiSe ${now.month > 6 ? now.year : now.year - 1}'
: 'SoSe ${now.year}'),
Text('01 - ${Ticket().matrikel} - 001'),
],
)
],
),
const SizedBox(height: 8),
const Text(
'Gültig auf allen Linien im gesamten RMV Verbundnetz und den VRN-Übergangstarifgebieten. Gültig auf allen Linien im Verbundnetz des RNN inkl. ÜB AzWo. KBS 471 (Nahverkehr bis Koblenz). Es gelten die gemeinsamen Beförderungsbedingungen und Tarifbestimmungen.',
style: TextStyle(fontSize: 10),
),
const SizedBox(height: 4),
Padding(
padding: const EdgeInsets.only(right: 114 + 16),
child: SlideTransition(
position: Tween<Offset>(
begin: const Offset(0.0, 0.0),
end: const Offset(1.0, 0.0),
).animate(CurvedAnimation(
parent: controller,
curve: Curves.linear,
)),
child: Row(
children: [
SvgPicture.asset(
'assets/RNN_logo.svg',
height: 20,
fit: BoxFit.fitHeight,
),
const SizedBox(width: 4),
SvgPicture.asset(
'assets/RMV_logo.svg',
height: 16,
fit: BoxFit.fitHeight,
),
],
)),
),
const SizedBox(height: 8),
SizedBox(
height: 28,
child: Center(
child: TextButton(
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
ShowAusweis(isWinter, now)));
},
child: const Text(
' Studierendenausweis ',
style: TextStyle(
color: Colors.white,
height: 1.0,
fontWeight: FontWeight.w400),
)),
),
),
Text('Gesamtlaufzeit: $beginning bis $ending',
style: const TextStyle(fontSize: 12))
]));
}
@override
void dispose() {
controller.dispose();
super.dispose();
}
}