diff --git a/lib/train_info_page/train_info_cupertino.dart b/lib/train_info_page/train_info_cupertino.dart index fe9c5c3..93aa3ec 100644 --- a/lib/train_info_page/train_info_cupertino.dart +++ b/lib/train_info_page/train_info_cupertino.dart @@ -3,6 +3,7 @@ import 'package:info_tren/models/train_data.dart'; import 'package:info_tren/train_info_page/train_info.dart'; import 'package:info_tren/train_info_page/train_info_animation_helpers.dart'; import 'package:info_tren/train_info_page/train_info_constants.dart'; +import 'package:info_tren/train_info_page/train_info_cupertino_DisplayTrainStation.dart'; import 'package:info_tren/utils/stream_list.dart'; class TrainInfoCupertino extends StatefulWidget { @@ -962,223 +963,6 @@ class DisplayTrainStations extends StatelessWidget { } } -class DisplayTrainStation extends StatelessWidget { - final OnDemandStation station; - - DisplayTrainStation({@required this.station}); - - @override - Widget build(BuildContext context) { - return Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Row( - mainAxisSize: MainAxisSize.max, - children: [ - Padding( - padding: const EdgeInsets.all(8), - child: Container( - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10), - border: Border.all( - width: 2, - color: FOREGROUND_WHITE, - ), - // color: CupertinoColors.activeOrange, - ), - width: 48, - height: 48, - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Expanded( - child: Center( - child: FutureDisplay( - future: station.km, - builder: (context, value) { - return Text( - value.toString(), - style: CupertinoTheme.of(context).textTheme.textStyle.copyWith( - fontSize: 18, - fontWeight: FontWeight.w100, - ), - textAlign: TextAlign.center, - ); - }, - ), - ), - ), - Text( - "km", - style: CupertinoTheme.of(context).textTheme.textStyle.copyWith(fontSize: 10), - ), - ], - ), - ), - ), - Expanded( - child: FutureDisplay>( - future: Future.wait([ - station.stationName, - station.observations - ]), - builder: (context, items) { - return Text( - items[0], - style: CupertinoTheme.of(context).textTheme.textStyle.copyWith( - fontSize: 22, - fontWeight: FontWeight.w100, - fontStyle: items[1] == "ONI" ? FontStyle.italic : FontStyle.normal, - ), - textAlign: TextAlign.center, - ); - }, - ) - ) - ], - ), - FutureDisplay>( - future: Future.wait([ - station.arrivalTime, - station.stopsFor, - station.departureTime - ]), - builder: (context, items) { - if (items[0].isEmpty) { - // Plecare - return Row( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Expanded(child: Container(),), - Text("plecare la ${items[2]}"), - Container(width: 2,), - Text( - "→", - style: CupertinoTheme.of(context).textTheme.textStyle.copyWith( - fontSize: 22, - ), - ), - ], - ); - } - - if (items[2].isEmpty) { - // Sosire - return Row( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Text( - "→", - style: CupertinoTheme.of(context).textTheme.textStyle.copyWith( - fontSize: 22, - ), - ), - Container(width: 2,), - Text("sosire la ${items[0]}"), - Expanded(child: Container(),), - ], - ); - } - - return Row( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Text( - "→", - style: CupertinoTheme.of(context).textTheme.textStyle.copyWith( - fontSize: 22, - ), - ), - Container(width: 2,), - Text(items[0]), - Expanded(child: Container(),), - Column( - mainAxisSize: MainAxisSize.min, - children: [ - Builder( - builder: (context) { - if (items[1].isEmpty || items[1] == "0") { - return Container(); - } - if (items[1] == "1") { - return Text( - "staționează pentru\n1 minut", - textAlign: TextAlign.center, - ); - } - return Text( - "staționează pentru\n${items[1]} minute", - textAlign: TextAlign.center, - ); - } - ), - FutureBuilder( - future: station.observations, - builder: (context, snapshot) { - if (snapshot.data == "ONI") { - return Text( - "oprire ne-itinerarică", - style: CupertinoTheme.of(context).textTheme.textStyle.copyWith( - fontStyle: FontStyle.italic, - ), - textAlign: TextAlign.center, - ); - } - - return Container(); - }, - ) - ], - ), - Expanded(child: Container(),), - Text(items[2]), - Container(width: 2,), - Text( - "→", - style: CupertinoTheme.of(context).textTheme.textStyle.copyWith( - fontSize: 22, - ), - ), - ], - ); - }, - ), - FutureDisplay( - future: station.delay, - builder: (context, delay) { - if (delay == 0) return Container(); - - else if (delay > 0) { - return Text( - "$delay minute întârziere", - style: CupertinoTheme.of(context).textTheme.textStyle.copyWith( - color: CupertinoColors.destructiveRed, - fontSize: 12, - fontStyle: FontStyle.italic, - ), - ); - } - - else if (delay < 0) { - return Text( - "${-delay} minute mai devreme", - style: CupertinoTheme.of(context).textTheme.textStyle.copyWith( - color: CupertinoColors.activeGreen, - fontSize: 12, - fontStyle: FontStyle.italic, - ), - ); - } - - return Container(); - }, - ) - ], - ); - } -} - class CupertinoDivider extends StatelessWidget { final Color color; diff --git a/lib/train_info_page/train_info_cupertino_DisplayTrainStation.dart b/lib/train_info_page/train_info_cupertino_DisplayTrainStation.dart new file mode 100644 index 0000000..667406d --- /dev/null +++ b/lib/train_info_page/train_info_cupertino_DisplayTrainStation.dart @@ -0,0 +1,219 @@ +import 'package:flutter/cupertino.dart'; +import 'package:info_tren/models/train_data.dart'; + +class DisplayTrainStation extends StatelessWidget { + final OnDemandStation station; + + DisplayTrainStation({@required this.station}); + + @override + Widget build(BuildContext context) { + return Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Row( + mainAxisSize: MainAxisSize.max, + children: [ + Padding( + padding: const EdgeInsets.all(8), + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10), + border: Border.all( + width: 2, + color: FOREGROUND_WHITE, + ), + // color: CupertinoColors.activeOrange, + ), + width: 48, + height: 48, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Expanded( + child: Center( + child: FutureDisplay( + future: station.km, + builder: (context, value) { + return Text( + value.toString(), + style: CupertinoTheme.of(context).textTheme.textStyle.copyWith( + fontSize: 18, + fontWeight: FontWeight.w100, + ), + textAlign: TextAlign.center, + ); + }, + ), + ), + ), + Text( + "km", + style: CupertinoTheme.of(context).textTheme.textStyle.copyWith(fontSize: 10), + ), + ], + ), + ), + ), + Expanded( + child: FutureDisplay>( + future: Future.wait([ + station.stationName, + station.observations + ]), + builder: (context, items) { + return Text( + items[0], + style: CupertinoTheme.of(context).textTheme.textStyle.copyWith( + fontSize: 22, + fontWeight: FontWeight.w100, + fontStyle: items[1] == "ONI" ? FontStyle.italic : FontStyle.normal, + ), + textAlign: TextAlign.center, + ); + }, + ) + ) + ], + ), + FutureDisplay>( + future: Future.wait([ + station.arrivalTime, + station.stopsFor, + station.departureTime + ]), + builder: (context, items) { + if (items[0].isEmpty) { + // Plecare + return Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Expanded(child: Container(),), + Text("plecare la ${items[2]}"), + Container(width: 2,), + Text( + "→", + style: CupertinoTheme.of(context).textTheme.textStyle.copyWith( + fontSize: 22, + ), + ), + ], + ); + } + + if (items[2].isEmpty) { + // Sosire + return Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + "→", + style: CupertinoTheme.of(context).textTheme.textStyle.copyWith( + fontSize: 22, + ), + ), + Container(width: 2,), + Text("sosire la ${items[0]}"), + Expanded(child: Container(),), + ], + ); + } + + return Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Text( + "→", + style: CupertinoTheme.of(context).textTheme.textStyle.copyWith( + fontSize: 22, + ), + ), + Container(width: 2,), + Text(items[0]), + Expanded(child: Container(),), + Column( + mainAxisSize: MainAxisSize.min, + children: [ + Builder( + builder: (context) { + if (items[1].isEmpty || items[1] == "0") { + return Container(); + } + if (items[1] == "1") { + return Text( + "staționează pentru\n1 minut", + textAlign: TextAlign.center, + ); + } + return Text( + "staționează pentru\n${items[1]} minute", + textAlign: TextAlign.center, + ); + } + ), + FutureBuilder( + future: station.observations, + builder: (context, snapshot) { + if (snapshot.data == "ONI") { + return Text( + "oprire ne-itinerarică", + style: CupertinoTheme.of(context).textTheme.textStyle.copyWith( + fontStyle: FontStyle.italic, + ), + textAlign: TextAlign.center, + ); + } + + return Container(); + }, + ) + ], + ), + Expanded(child: Container(),), + Text(items[2]), + Container(width: 2,), + Text( + "→", + style: CupertinoTheme.of(context).textTheme.textStyle.copyWith( + fontSize: 22, + ), + ), + ], + ); + }, + ), + FutureDisplay( + future: station.delay, + builder: (context, delay) { + if (delay == 0) return Container(); + + else if (delay > 0) { + return Text( + "$delay minute întârziere", + style: CupertinoTheme.of(context).textTheme.textStyle.copyWith( + color: CupertinoColors.destructiveRed, + fontSize: 12, + fontStyle: FontStyle.italic, + ), + ); + } + + else if (delay < 0) { + return Text( + "${-delay} minute mai devreme", + style: CupertinoTheme.of(context).textTheme.textStyle.copyWith( + color: CupertinoColors.activeGreen, + fontSize: 12, + fontStyle: FontStyle.italic, + ), + ); + } + + return Container(); + }, + ) + ], + ); + } +} \ No newline at end of file diff --git a/lib/train_info_page/train_info_prompt.dart b/lib/train_info_page/train_info_prompt.dart index cd78164..5bea6db 100644 --- a/lib/train_info_page/train_info_prompt.dart +++ b/lib/train_info_page/train_info_prompt.dart @@ -331,9 +331,12 @@ class _TrainInfoPromptCupertinoState extends State wit ), ), Expanded( - child: getOperatorsListView(context, currentInput: trainNoController.text, onTrainSelected: (number) { - onTrainSelected(context, number); - }) + child: getOperatorsListView( + context, + currentInput: trainNoController.text, onTrainSelected: (number) { + onTrainSelected(context, number); + } + ) ) ], ),