Add support for IC trains
This commit is contained in:
		
							parent
							
								
									2456f7cbda
								
							
						
					
					
						commit
						9637551d7a
					
				
					 10 changed files with 60 additions and 97 deletions
				
			
		| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
import 'package:flutter/cupertino.dart';
 | 
					import 'package:flutter/cupertino.dart';
 | 
				
			||||||
import 'package:info_tren/components/cupertino_divider.dart';
 | 
					import 'package:info_tren/components/cupertino_divider.dart';
 | 
				
			||||||
import 'package:info_tren/components/select_train_suggestions/select_train_suggestions.dart';
 | 
					import 'package:info_tren/components/select_train_suggestions/select_train_suggestions.dart';
 | 
				
			||||||
 | 
					import 'package:info_tren/components/train_id_text_span.dart';
 | 
				
			||||||
import 'package:info_tren/models.dart';
 | 
					import 'package:info_tren/models.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SelectTrainSuggestionsCupertino extends SelectTrainSuggestionsShared {
 | 
					class SelectTrainSuggestionsCupertino extends SelectTrainSuggestionsShared {
 | 
				
			||||||
| 
						 | 
					@ -69,8 +70,8 @@ class OperatorAutocompleteTileCupertino extends OperatorAutocompleteTile {
 | 
				
			||||||
                    style: CupertinoTheme.of(context).textTheme.textStyle.copyWith(fontSize: 10, fontWeight: FontWeight.w200),
 | 
					                    style: CupertinoTheme.of(context).textTheme.textStyle.copyWith(fontSize: 10, fontWeight: FontWeight.w200),
 | 
				
			||||||
                    textAlign: TextAlign.left,
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
                  ),
 | 
					                  ),
 | 
				
			||||||
                  Text(
 | 
					                  Text.rich(
 | 
				
			||||||
                    "${train.rank} ${train.number}",
 | 
					                    trainIdSpan(rank: train.rank, number: train.number),
 | 
				
			||||||
                    textAlign: TextAlign.left,
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
                  ),
 | 
					                  ),
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,6 @@
 | 
				
			||||||
import 'package:fluent_ui/fluent_ui.dart';
 | 
					import 'package:fluent_ui/fluent_ui.dart';
 | 
				
			||||||
import 'package:info_tren/components/select_train_suggestions/select_train_suggestions.dart';
 | 
					import 'package:info_tren/components/select_train_suggestions/select_train_suggestions.dart';
 | 
				
			||||||
 | 
					import 'package:info_tren/components/train_id_text_span.dart';
 | 
				
			||||||
import 'package:info_tren/models.dart';
 | 
					import 'package:info_tren/models.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SelectTrainSuggestionsFluent extends SelectTrainSuggestionsShared {
 | 
					class SelectTrainSuggestionsFluent extends SelectTrainSuggestionsShared {
 | 
				
			||||||
| 
						 | 
					@ -68,8 +69,8 @@ class OperatorAutocompleteTileFluent extends OperatorAutocompleteTile {
 | 
				
			||||||
                    style: FluentTheme.of(context).typography.body?.copyWith(fontSize: 10, fontWeight: FontWeight.w200),
 | 
					                    style: FluentTheme.of(context).typography.body?.copyWith(fontSize: 10, fontWeight: FontWeight.w200),
 | 
				
			||||||
                    textAlign: TextAlign.left,
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
                  ),
 | 
					                  ),
 | 
				
			||||||
                  Text(
 | 
					                  Text.rich(
 | 
				
			||||||
                    "${train.rank} ${train.number}",
 | 
					                    trainIdSpan(rank: train.rank, number: train.number),
 | 
				
			||||||
                    textAlign: TextAlign.left,
 | 
					                    textAlign: TextAlign.left,
 | 
				
			||||||
                  ),
 | 
					                  ),
 | 
				
			||||||
                ],
 | 
					                ],
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,6 @@
 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
import 'package:info_tren/components/select_train_suggestions/select_train_suggestions.dart';
 | 
					import 'package:info_tren/components/select_train_suggestions/select_train_suggestions.dart';
 | 
				
			||||||
 | 
					import 'package:info_tren/components/train_id_text_span.dart';
 | 
				
			||||||
import 'package:info_tren/models.dart';
 | 
					import 'package:info_tren/models.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class SelectTrainSuggestionsMaterial extends SelectTrainSuggestionsShared {
 | 
					class SelectTrainSuggestionsMaterial extends SelectTrainSuggestionsShared {
 | 
				
			||||||
| 
						 | 
					@ -44,7 +45,7 @@ class OperatorAutocompleteTileMaterial extends OperatorAutocompleteTile {
 | 
				
			||||||
  Widget build(BuildContext context) {
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
    return ListTile(
 | 
					    return ListTile(
 | 
				
			||||||
      dense: true,
 | 
					      dense: true,
 | 
				
			||||||
      title: Text("${train.rank} ${train.number}"),
 | 
					      title: Text.rich(trainIdSpan(rank: train.rank, number: train.number)),
 | 
				
			||||||
      subtitle: Text(operatorName),
 | 
					      subtitle: Text(operatorName),
 | 
				
			||||||
      onTap: () {
 | 
					      onTap: () {
 | 
				
			||||||
        onTrainSelected(train.number);
 | 
					        onTrainSelected(train.number);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										39
									
								
								lib/components/train_id_text_span.dart
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								lib/components/train_id_text_span.dart
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,39 @@
 | 
				
			||||||
 | 
					import 'package:flutter/gestures.dart';
 | 
				
			||||||
 | 
					import 'package:flutter/rendering.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TextSpan trainIdSpan({
 | 
				
			||||||
 | 
					  required String rank,
 | 
				
			||||||
 | 
					  required String number,
 | 
				
			||||||
 | 
					  Locale? locale,
 | 
				
			||||||
 | 
					  MouseCursor? mouseCursor,
 | 
				
			||||||
 | 
					  void Function(PointerEnterEvent)? onEnter,
 | 
				
			||||||
 | 
					  void Function(PointerExitEvent)? onExit,
 | 
				
			||||||
 | 
					  GestureRecognizer? recognizer,
 | 
				
			||||||
 | 
					  String? semanticsLabel,
 | 
				
			||||||
 | 
					  bool? spellOut,
 | 
				
			||||||
 | 
					  TextStyle? style,
 | 
				
			||||||
 | 
					}) => TextSpan(
 | 
				
			||||||
 | 
					  children: [
 | 
				
			||||||
 | 
					    TextSpan(
 | 
				
			||||||
 | 
					      text: rank,
 | 
				
			||||||
 | 
					      style: TextStyle(
 | 
				
			||||||
 | 
					        inherit: true,
 | 
				
			||||||
 | 
					        color: rank.startsWith('IC')
 | 
				
			||||||
 | 
					            ? const Color.fromARGB(255, 0, 255, 0)
 | 
				
			||||||
 | 
					            : rank.startsWith('IR')
 | 
				
			||||||
 | 
					                ? const Color.fromARGB(255, 255, 0, 0)
 | 
				
			||||||
 | 
					                : null,
 | 
				
			||||||
 | 
					      ),
 | 
				
			||||||
 | 
					    ),
 | 
				
			||||||
 | 
					    const TextSpan(text: ' '),
 | 
				
			||||||
 | 
					    TextSpan(text: number),
 | 
				
			||||||
 | 
					  ],
 | 
				
			||||||
 | 
					  locale: locale,
 | 
				
			||||||
 | 
					  mouseCursor: mouseCursor,
 | 
				
			||||||
 | 
					  onEnter: onEnter,
 | 
				
			||||||
 | 
					  onExit: onExit,
 | 
				
			||||||
 | 
					  recognizer: recognizer,
 | 
				
			||||||
 | 
					  semanticsLabel: semanticsLabel,
 | 
				
			||||||
 | 
					  spellOut: spellOut,
 | 
				
			||||||
 | 
					  style: style,
 | 
				
			||||||
 | 
					);
 | 
				
			||||||
| 
						 | 
					@ -3,6 +3,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
 | 
				
			||||||
import 'package:info_tren/components/loading/loading.dart';
 | 
					import 'package:info_tren/components/loading/loading.dart';
 | 
				
			||||||
import 'package:info_tren/components/refresh_future_builder.dart';
 | 
					import 'package:info_tren/components/refresh_future_builder.dart';
 | 
				
			||||||
import 'package:info_tren/components/sliver_persistent_header_padding.dart';
 | 
					import 'package:info_tren/components/sliver_persistent_header_padding.dart';
 | 
				
			||||||
 | 
					import 'package:info_tren/components/train_id_text_span.dart';
 | 
				
			||||||
import 'package:info_tren/models.dart';
 | 
					import 'package:info_tren/models.dart';
 | 
				
			||||||
import 'package:info_tren/pages/station_arrdep_page/view_station/view_station.dart';
 | 
					import 'package:info_tren/pages/station_arrdep_page/view_station/view_station.dart';
 | 
				
			||||||
import 'package:info_tren/providers.dart';
 | 
					import 'package:info_tren/providers.dart';
 | 
				
			||||||
| 
						 | 
					@ -66,18 +67,7 @@ class ViewStationPageCupertino extends ViewStationPageShared {
 | 
				
			||||||
      onTap: () => onTrainTapped(context, item.train),
 | 
					      onTap: () => onTrainTapped(context, item.train),
 | 
				
			||||||
      child: CupertinoFormRow(
 | 
					      child: CupertinoFormRow(
 | 
				
			||||||
        prefix: Text.rich(
 | 
					        prefix: Text.rich(
 | 
				
			||||||
          TextSpan(
 | 
					          trainIdSpan(rank: item.train.rank, number: item.train.number),
 | 
				
			||||||
            children: [
 | 
					 | 
				
			||||||
              TextSpan(
 | 
					 | 
				
			||||||
                text: item.train.rank,
 | 
					 | 
				
			||||||
                style: TextStyle(
 | 
					 | 
				
			||||||
                  color: item.train.rank.startsWith('IR') ? const Color.fromARGB(255, 255, 0, 0) : null,
 | 
					 | 
				
			||||||
                ),
 | 
					 | 
				
			||||||
              ),
 | 
					 | 
				
			||||||
              const TextSpan(text: ' '),
 | 
					 | 
				
			||||||
              TextSpan(text: item.train.number,),
 | 
					 | 
				
			||||||
            ],
 | 
					 | 
				
			||||||
          ),
 | 
					 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
        helper: Text.rich(
 | 
					        helper: Text.rich(
 | 
				
			||||||
          TextSpan(
 | 
					          TextSpan(
 | 
				
			||||||
| 
						 | 
					@ -99,18 +89,7 @@ class ViewStationPageCupertino extends ViewStationPageShared {
 | 
				
			||||||
      onTap: () => onTrainTapped(context, item.train),
 | 
					      onTap: () => onTrainTapped(context, item.train),
 | 
				
			||||||
      child: CupertinoFormRow(
 | 
					      child: CupertinoFormRow(
 | 
				
			||||||
        prefix: Text.rich(
 | 
					        prefix: Text.rich(
 | 
				
			||||||
          TextSpan(
 | 
					          trainIdSpan(rank: item.train.rank, number: item.train.number),
 | 
				
			||||||
            children: [
 | 
					 | 
				
			||||||
              TextSpan(
 | 
					 | 
				
			||||||
                text: item.train.rank,
 | 
					 | 
				
			||||||
                style: TextStyle(
 | 
					 | 
				
			||||||
                  color: item.train.rank.startsWith('IR') ? const Color.fromARGB(255, 255, 0, 0) : null,
 | 
					 | 
				
			||||||
                ),
 | 
					 | 
				
			||||||
              ),
 | 
					 | 
				
			||||||
              const TextSpan(text: ' '),
 | 
					 | 
				
			||||||
              TextSpan(text: item.train.number,),
 | 
					 | 
				
			||||||
            ],
 | 
					 | 
				
			||||||
          ),
 | 
					 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
        helper: Text.rich(
 | 
					        helper: Text.rich(
 | 
				
			||||||
          TextSpan(
 | 
					          TextSpan(
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -6,6 +6,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
 | 
				
			||||||
import 'package:info_tren/components/badge/badge.dart';
 | 
					import 'package:info_tren/components/badge/badge.dart';
 | 
				
			||||||
import 'package:info_tren/components/loading/loading.dart';
 | 
					import 'package:info_tren/components/loading/loading.dart';
 | 
				
			||||||
import 'package:info_tren/components/refresh_future_builder.dart';
 | 
					import 'package:info_tren/components/refresh_future_builder.dart';
 | 
				
			||||||
 | 
					import 'package:info_tren/components/train_id_text_span.dart';
 | 
				
			||||||
import 'package:info_tren/models.dart';
 | 
					import 'package:info_tren/models.dart';
 | 
				
			||||||
import 'package:info_tren/pages/station_arrdep_page/view_station/view_station.dart';
 | 
					import 'package:info_tren/pages/station_arrdep_page/view_station/view_station.dart';
 | 
				
			||||||
import 'package:info_tren/providers.dart';
 | 
					import 'package:info_tren/providers.dart';
 | 
				
			||||||
| 
						 | 
					@ -177,18 +178,7 @@ class ViewStationPageFluent extends ViewStationPageShared {
 | 
				
			||||||
                  child: ListTile(
 | 
					                  child: ListTile(
 | 
				
			||||||
                    // isThreeLine: item.status.delay != 0,
 | 
					                    // isThreeLine: item.status.delay != 0,
 | 
				
			||||||
                    title: Text.rich(
 | 
					                    title: Text.rich(
 | 
				
			||||||
                      TextSpan(
 | 
					                      trainIdSpan(rank: item.train.rank, number: item.train.number),
 | 
				
			||||||
                        children: [
 | 
					 | 
				
			||||||
                          TextSpan(
 | 
					 | 
				
			||||||
                            text: item.train.rank,
 | 
					 | 
				
			||||||
                            style: TextStyle(
 | 
					 | 
				
			||||||
                              color: item.train.rank.startsWith('IR') ? const Color.fromARGB(255, 255, 0, 0) : null,
 | 
					 | 
				
			||||||
                            ),
 | 
					 | 
				
			||||||
                          ),
 | 
					 | 
				
			||||||
                          const TextSpan(text: ' '),
 | 
					 | 
				
			||||||
                          TextSpan(text: item.train.number,),
 | 
					 | 
				
			||||||
                        ],
 | 
					 | 
				
			||||||
                      ),
 | 
					 | 
				
			||||||
                    ),
 | 
					                    ),
 | 
				
			||||||
                    subtitle: Text.rich(
 | 
					                    subtitle: Text.rich(
 | 
				
			||||||
                      TextSpan(
 | 
					                      TextSpan(
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,6 +5,7 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
 | 
				
			||||||
import 'package:info_tren/components/badge/badge.dart';
 | 
					import 'package:info_tren/components/badge/badge.dart';
 | 
				
			||||||
import 'package:info_tren/components/loading/loading.dart';
 | 
					import 'package:info_tren/components/loading/loading.dart';
 | 
				
			||||||
import 'package:info_tren/components/refresh_future_builder.dart';
 | 
					import 'package:info_tren/components/refresh_future_builder.dart';
 | 
				
			||||||
 | 
					import 'package:info_tren/components/train_id_text_span.dart';
 | 
				
			||||||
import 'package:info_tren/models.dart';
 | 
					import 'package:info_tren/models.dart';
 | 
				
			||||||
import 'package:info_tren/pages/station_arrdep_page/view_station/view_station.dart';
 | 
					import 'package:info_tren/pages/station_arrdep_page/view_station/view_station.dart';
 | 
				
			||||||
import 'package:info_tren/providers.dart';
 | 
					import 'package:info_tren/providers.dart';
 | 
				
			||||||
| 
						 | 
					@ -142,18 +143,7 @@ class ViewStationPageMaterial extends ViewStationPageShared {
 | 
				
			||||||
                child: ListTile(
 | 
					                child: ListTile(
 | 
				
			||||||
                  isThreeLine: item.status.delay != 0,
 | 
					                  isThreeLine: item.status.delay != 0,
 | 
				
			||||||
                  title: Text.rich(
 | 
					                  title: Text.rich(
 | 
				
			||||||
                    TextSpan(
 | 
					                    trainIdSpan(rank: item.train.rank, number: item.train.number),
 | 
				
			||||||
                      children: [
 | 
					 | 
				
			||||||
                        TextSpan(
 | 
					 | 
				
			||||||
                          text: item.train.rank,
 | 
					 | 
				
			||||||
                          style: TextStyle(
 | 
					 | 
				
			||||||
                            color: item.train.rank.startsWith('IR') ? const Color.fromARGB(255, 255, 0, 0) : null,
 | 
					 | 
				
			||||||
                          ),
 | 
					 | 
				
			||||||
                        ),
 | 
					 | 
				
			||||||
                        const TextSpan(text: ' '),
 | 
					 | 
				
			||||||
                        TextSpan(text: item.train.number,),
 | 
					 | 
				
			||||||
                      ],
 | 
					 | 
				
			||||||
                    ),
 | 
					 | 
				
			||||||
                  ),
 | 
					                  ),
 | 
				
			||||||
                  subtitle: Text.rich(
 | 
					                  subtitle: Text.rich(
 | 
				
			||||||
                    TextSpan(
 | 
					                    TextSpan(
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,7 @@ import 'package:flutter/cupertino.dart';
 | 
				
			||||||
import 'package:flutter/gestures.dart';
 | 
					import 'package:flutter/gestures.dart';
 | 
				
			||||||
import 'package:info_tren/components/cupertino_divider.dart';
 | 
					import 'package:info_tren/components/cupertino_divider.dart';
 | 
				
			||||||
import 'package:info_tren/components/sliver_persistent_header_padding.dart';
 | 
					import 'package:info_tren/components/sliver_persistent_header_padding.dart';
 | 
				
			||||||
 | 
					import 'package:info_tren/components/train_id_text_span.dart';
 | 
				
			||||||
import 'package:info_tren/models.dart';
 | 
					import 'package:info_tren/models.dart';
 | 
				
			||||||
import 'package:info_tren/pages/train_info_page/train_info_constants.dart';
 | 
					import 'package:info_tren/pages/train_info_page/train_info_constants.dart';
 | 
				
			||||||
import 'package:info_tren/pages/train_info_page/view_train/train_info.dart';
 | 
					import 'package:info_tren/pages/train_info_page/view_train/train_info.dart';
 | 
				
			||||||
| 
						 | 
					@ -562,18 +563,7 @@ class DisplayTrainID extends StatelessWidget {
 | 
				
			||||||
      child: Padding(
 | 
					      child: Padding(
 | 
				
			||||||
        padding: const EdgeInsets.all(8.0),
 | 
					        padding: const EdgeInsets.all(8.0),
 | 
				
			||||||
        child: Text.rich(
 | 
					        child: Text.rich(
 | 
				
			||||||
        TextSpan(
 | 
					          trainIdSpan(rank: trainData.rank, number: trainData.number),
 | 
				
			||||||
          children: [
 | 
					 | 
				
			||||||
            TextSpan(
 | 
					 | 
				
			||||||
              text: trainData.rank,
 | 
					 | 
				
			||||||
              style: TextStyle(
 | 
					 | 
				
			||||||
                color: trainData.rank.startsWith('IR') ? const Color.fromARGB(255, 255, 0, 0) : null,
 | 
					 | 
				
			||||||
              ),
 | 
					 | 
				
			||||||
            ),
 | 
					 | 
				
			||||||
            const TextSpan(text: ' '),
 | 
					 | 
				
			||||||
            TextSpan(text: trainData.number,),
 | 
					 | 
				
			||||||
          ],
 | 
					 | 
				
			||||||
        ),
 | 
					 | 
				
			||||||
          style: CupertinoTheme.of(context).textTheme.navLargeTitleTextStyle,
 | 
					          style: CupertinoTheme.of(context).textTheme.navLargeTitleTextStyle,
 | 
				
			||||||
        ),
 | 
					        ),
 | 
				
			||||||
      ),
 | 
					      ),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,6 @@
 | 
				
			||||||
import 'package:fluent_ui/fluent_ui.dart';
 | 
					import 'package:fluent_ui/fluent_ui.dart';
 | 
				
			||||||
import 'package:flutter/gestures.dart';
 | 
					import 'package:flutter/gestures.dart';
 | 
				
			||||||
 | 
					import 'package:info_tren/components/train_id_text_span.dart';
 | 
				
			||||||
import 'package:info_tren/models.dart';
 | 
					import 'package:info_tren/models.dart';
 | 
				
			||||||
import 'package:info_tren/pages/station_arrdep_page/view_station/view_station.dart';
 | 
					import 'package:info_tren/pages/station_arrdep_page/view_station/view_station.dart';
 | 
				
			||||||
import 'package:info_tren/pages/train_info_page/view_train/train_info.dart';
 | 
					import 'package:info_tren/pages/train_info_page/view_train/train_info.dart';
 | 
				
			||||||
| 
						 | 
					@ -303,22 +304,7 @@ class DisplayTrainID extends StatelessWidget {
 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  Widget build(BuildContext context) {
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
    return Text.rich(
 | 
					    return Text.rich(
 | 
				
			||||||
      TextSpan(
 | 
					      trainIdSpan(rank: trainData.rank, number: trainData.number),
 | 
				
			||||||
        children: [
 | 
					 | 
				
			||||||
          TextSpan(
 | 
					 | 
				
			||||||
            text: trainData.rank,
 | 
					 | 
				
			||||||
            style: TextStyle(
 | 
					 | 
				
			||||||
              color: trainData.rank.startsWith('IR')
 | 
					 | 
				
			||||||
                  ? const Color.fromARGB(255, 255, 0, 0)
 | 
					 | 
				
			||||||
                  : null,
 | 
					 | 
				
			||||||
            ),
 | 
					 | 
				
			||||||
          ),
 | 
					 | 
				
			||||||
          const TextSpan(text: ' '),
 | 
					 | 
				
			||||||
          TextSpan(
 | 
					 | 
				
			||||||
            text: trainData.number,
 | 
					 | 
				
			||||||
          ),
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
      ),
 | 
					 | 
				
			||||||
      style: FluentTheme.of(context).typography.title?.copyWith(
 | 
					      style: FluentTheme.of(context).typography.title?.copyWith(
 | 
				
			||||||
        color: FluentTheme.of(context).typography.body?.color,
 | 
					        color: FluentTheme.of(context).typography.body?.color,
 | 
				
			||||||
        fontWeight: FontWeight.bold,
 | 
					        fontWeight: FontWeight.bold,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,7 @@
 | 
				
			||||||
import 'package:flutter/gestures.dart';
 | 
					import 'package:flutter/gestures.dart';
 | 
				
			||||||
import 'package:flutter/material.dart';
 | 
					import 'package:flutter/material.dart';
 | 
				
			||||||
import 'package:info_tren/components/slim_app_bar.dart';
 | 
					import 'package:info_tren/components/slim_app_bar.dart';
 | 
				
			||||||
 | 
					import 'package:info_tren/components/train_id_text_span.dart';
 | 
				
			||||||
import 'package:info_tren/models.dart';
 | 
					import 'package:info_tren/models.dart';
 | 
				
			||||||
import 'package:info_tren/pages/station_arrdep_page/view_station/view_station.dart';
 | 
					import 'package:info_tren/pages/station_arrdep_page/view_station/view_station.dart';
 | 
				
			||||||
import 'package:info_tren/pages/train_info_page/view_train/train_info.dart';
 | 
					import 'package:info_tren/pages/train_info_page/view_train/train_info.dart';
 | 
				
			||||||
| 
						 | 
					@ -318,22 +319,7 @@ class DisplayTrainID extends StatelessWidget {
 | 
				
			||||||
  @override
 | 
					  @override
 | 
				
			||||||
  Widget build(BuildContext context) {
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
    return Text.rich(
 | 
					    return Text.rich(
 | 
				
			||||||
      TextSpan(
 | 
					      trainIdSpan(rank: trainData.rank, number: trainData.number),
 | 
				
			||||||
        children: [
 | 
					 | 
				
			||||||
          TextSpan(
 | 
					 | 
				
			||||||
            text: trainData.rank,
 | 
					 | 
				
			||||||
            style: TextStyle(
 | 
					 | 
				
			||||||
              color: trainData.rank.startsWith('IR')
 | 
					 | 
				
			||||||
                  ? const Color.fromARGB(255, 255, 0, 0)
 | 
					 | 
				
			||||||
                  : null,
 | 
					 | 
				
			||||||
            ),
 | 
					 | 
				
			||||||
          ),
 | 
					 | 
				
			||||||
          const TextSpan(text: ' '),
 | 
					 | 
				
			||||||
          TextSpan(
 | 
					 | 
				
			||||||
            text: trainData.number,
 | 
					 | 
				
			||||||
          ),
 | 
					 | 
				
			||||||
        ],
 | 
					 | 
				
			||||||
      ),
 | 
					 | 
				
			||||||
      style: (isSmallScreen(context)
 | 
					      style: (isSmallScreen(context)
 | 
				
			||||||
              ? Theme.of(context).textTheme.headlineMedium
 | 
					              ? Theme.of(context).textTheme.headlineMedium
 | 
				
			||||||
              : Theme.of(context).textTheme.displaySmall)
 | 
					              : Theme.of(context).textTheme.displaySmall)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue