diff --git a/lib/components/badge.dart b/lib/components/badge.dart index cf1356e..192b2c4 100644 --- a/lib/components/badge.dart +++ b/lib/components/badge.dart @@ -56,7 +56,7 @@ class MaterialBadge extends StatelessWidget { child: Center( child: Text( text, - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( fontSize: isSmallScreen(context) ? 16 : 20, fontWeight: MediaQuery.of(context).boldText ? FontWeight.w400 : FontWeight.w200, color: MediaQuery.of(context).boldText ? Colors.white70 : foregroundColor, @@ -67,7 +67,7 @@ class MaterialBadge extends StatelessWidget { ), Text( caption, - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( fontSize: 10, color: MediaQuery.of(context).boldText ? Colors.white70 : foregroundColor, ), @@ -86,7 +86,7 @@ class CupertinoBadge extends StatelessWidget { final bool isOnTime; final bool isDelayed; - CupertinoBadge({ + const CupertinoBadge({ required this.text, required this.caption, this.isNotScheduled = false, @@ -100,16 +100,16 @@ class CupertinoBadge extends StatelessWidget { Color? backgroundColor; if (isNotScheduled) { - foregroundColor = Color.fromRGBO(225, 175, 30, 1); - backgroundColor = Color.fromRGBO(80, 40, 10, 1); + foregroundColor = const Color.fromRGBO(225, 175, 30, 1); + backgroundColor = const Color.fromRGBO(80, 40, 10, 1); } else if (isOnTime) { - foregroundColor = Color.fromRGBO(130, 175, 65, 1); - backgroundColor = Color.fromRGBO(40, 80, 10, 1); + foregroundColor = const Color.fromRGBO(130, 175, 65, 1); + backgroundColor = const Color.fromRGBO(40, 80, 10, 1); } else if (isDelayed) { - foregroundColor = Color.fromRGBO(225, 75, 30, 1); - backgroundColor = Color.fromRGBO(80, 20, 10, 1); + foregroundColor = const Color.fromRGBO(225, 75, 30, 1); + backgroundColor = const Color.fromRGBO(80, 20, 10, 1); } return Padding( diff --git a/lib/components/cupertino_divider.dart b/lib/components/cupertino_divider.dart index 2012a69..a27bbc9 100644 --- a/lib/components/cupertino_divider.dart +++ b/lib/components/cupertino_divider.dart @@ -4,7 +4,7 @@ import 'package:info_tren/pages/train_info_page/train_info_constants.dart'; class CupertinoDivider extends StatelessWidget { final Color color; - CupertinoDivider({Key? key, Color? color}): + const CupertinoDivider({Key? key, Color? color}): color = color ?? FOREGROUND_DARK_GREY, super(key: key); @@ -33,7 +33,7 @@ class CupertinoDivider extends StatelessWidget { class CupertinoVerticalDivider extends StatelessWidget { final Color color; - CupertinoVerticalDivider({Key? key, Color? color}): + const CupertinoVerticalDivider({Key? key, Color? color}): color = color ?? FOREGROUND_DARK_GREY, super(key: key); diff --git a/lib/components/cupertino_listtile.dart b/lib/components/cupertino_listtile.dart index 030c430..7e9ee9b 100644 --- a/lib/components/cupertino_listtile.dart +++ b/lib/components/cupertino_listtile.dart @@ -23,7 +23,6 @@ class CupertinoListTile extends StatelessWidget { title!, if (subtitle != null) CupertinoTheme( - child: subtitle!, data: CupertinoTheme.of(context).copyWith( textTheme: CupertinoTextThemeData( textStyle: TextStyle( @@ -31,6 +30,7 @@ class CupertinoListTile extends StatelessWidget { ) ) ), + child: subtitle!, ), ], ), diff --git a/lib/components/future_display.dart b/lib/components/future_display.dart index 90103b4..8e914e8 100644 --- a/lib/components/future_display.dart +++ b/lib/components/future_display.dart @@ -9,7 +9,7 @@ class FutureDisplay extends StatelessWidget { final Widget Function(BuildContext context, T data) builder; final Widget Function(BuildContext context, Object error, StackTrace? st)? errorBuilder; - FutureDisplay({Key? key, required this.future, required this.builder, this.errorBuilder, this.uiDesign}): super(key: key); + const FutureDisplay({Key? key, required this.future, required this.builder, this.errorBuilder, this.uiDesign}): super(key: key); @override Widget build(BuildContext context) { @@ -24,10 +24,10 @@ class FutureDisplay extends StatelessWidget { Widget loadingWidget; switch (uiDesign) { case UiDesign.MATERIAL: - loadingWidget = CircularProgressIndicator(); + loadingWidget = const CircularProgressIndicator(); break; case UiDesign.CUPERTINO: - loadingWidget = CupertinoActivityIndicator(); + loadingWidget = const CupertinoActivityIndicator(); break; default: throw UnmatchedUiDesignException(uiDesign); diff --git a/lib/components/loading/loading.dart b/lib/components/loading/loading.dart index b29736e..5e95068 100644 --- a/lib/components/loading/loading.dart +++ b/lib/components/loading/loading.dart @@ -27,5 +27,5 @@ class Loading extends StatelessWidget { abstract class LoadingCommon extends StatelessWidget { final String text; - LoadingCommon({required this.text}); + const LoadingCommon({required this.text}); } \ No newline at end of file diff --git a/lib/components/loading/loading_cupertino.dart b/lib/components/loading/loading_cupertino.dart index 59fdb8b..700a3fe 100644 --- a/lib/components/loading/loading_cupertino.dart +++ b/lib/components/loading/loading_cupertino.dart @@ -2,7 +2,7 @@ import 'package:flutter/cupertino.dart'; import 'package:info_tren/components/loading/loading.dart'; class LoadingCupertino extends LoadingCommon { - LoadingCupertino({required String text}) : super(text: text,); + const LoadingCupertino({required String text}) : super(text: text,); @override Widget build(BuildContext context) { @@ -11,8 +11,8 @@ class LoadingCupertino extends LoadingCommon { crossAxisAlignment: CrossAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: [ - Padding( - padding: const EdgeInsets.all(8.0), + const Padding( + padding: EdgeInsets.all(8.0), child: CupertinoActivityIndicator(), ), Padding( diff --git a/lib/components/loading/loading_material.dart b/lib/components/loading/loading_material.dart index 6fccd10..1c7658f 100644 --- a/lib/components/loading/loading_material.dart +++ b/lib/components/loading/loading_material.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:info_tren/components/loading/loading.dart'; class LoadingMaterial extends LoadingCommon { - LoadingMaterial({required String text}) : super(text: text,); + const LoadingMaterial({required String text}) : super(text: text,); @override Widget build(BuildContext context) { @@ -11,8 +11,8 @@ class LoadingMaterial extends LoadingCommon { crossAxisAlignment: CrossAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: [ - Padding( - padding: const EdgeInsets.all(8.0), + const Padding( + padding: EdgeInsets.all(8.0), child: CircularProgressIndicator(), ), Padding( diff --git a/lib/components/refresh_future_builder.dart b/lib/components/refresh_future_builder.dart index f03d521..f6b8438 100644 --- a/lib/components/refresh_future_builder.dart +++ b/lib/components/refresh_future_builder.dart @@ -19,7 +19,7 @@ class _RefreshFutureBuilderState extends State> { @override void initState() { super.initState(); - snapshot = widget.initialData != null ? RefreshFutureBuilderSnapshot.initial(widget.initialData!) : RefreshFutureBuilderSnapshot.nothing(); + snapshot = widget.initialData != null ? RefreshFutureBuilderSnapshot.initial(widget.initialData as T) : const RefreshFutureBuilderSnapshot.nothing(); } @override @@ -39,7 +39,7 @@ class _RefreshFutureBuilderState extends State> { setState(() { switch (snapshot.state) { case RefreshFutureBuilderState.none: - snapshot = RefreshFutureBuilderSnapshot.waiting(); + snapshot = const RefreshFutureBuilderSnapshot.waiting(); break; case RefreshFutureBuilderState.initial: snapshot = RefreshFutureBuilderSnapshot.refresh(snapshot.data); @@ -47,7 +47,7 @@ class _RefreshFutureBuilderState extends State> { case RefreshFutureBuilderState.waiting: return; case RefreshFutureBuilderState.error: - snapshot = RefreshFutureBuilderSnapshot.waiting(); + snapshot = const RefreshFutureBuilderSnapshot.waiting(); break; case RefreshFutureBuilderState.done: snapshot = RefreshFutureBuilderSnapshot.refresh(snapshot.data); diff --git a/lib/components/select_train_suggestions/select_train_suggestions.dart b/lib/components/select_train_suggestions/select_train_suggestions.dart index 42a185d..ae787f5 100644 --- a/lib/components/select_train_suggestions/select_train_suggestions.dart +++ b/lib/components/select_train_suggestions/select_train_suggestions.dart @@ -1,11 +1,9 @@ -import 'dart:convert'; import 'package:flutter/widgets.dart'; import 'package:info_tren/components/select_train_suggestions/select_train_suggestions_cupertino.dart'; import 'package:info_tren/components/select_train_suggestions/select_train_suggestions_material.dart'; import 'package:info_tren/models.dart'; import 'package:info_tren/utils/default_ui_design.dart'; -import 'package:tuple/tuple.dart'; class SelectTrainSuggestions extends StatefulWidget { final UiDesign? uiDesign; @@ -95,7 +93,7 @@ class OperatorAutocompleteSliver extends StatelessWidget { return SliverPrototypeExtentList( prototypeItem: Column( children: [ - mapTrainToItem(TrainsResult(company: 'Company', number: '123', rank: 'R')), + mapTrainToItem(const TrainsResult(company: 'Company', number: '123', rank: 'R')), ], ), delegate: SliverChildBuilderDelegate( diff --git a/lib/components/select_train_suggestions/select_train_suggestions_cupertino.dart b/lib/components/select_train_suggestions/select_train_suggestions_cupertino.dart index 9939ae6..80071bd 100644 --- a/lib/components/select_train_suggestions/select_train_suggestions_cupertino.dart +++ b/lib/components/select_train_suggestions/select_train_suggestions_cupertino.dart @@ -21,14 +21,14 @@ class SelectTrainSuggestionsStateCupertino extends SelectTrainSuggestionsState { ], ) ), - CupertinoDivider(), + const CupertinoDivider(), ], ); } } class OperatorAutocompleteTileCupertino extends OperatorAutocompleteTile { - OperatorAutocompleteTileCupertino({ + const OperatorAutocompleteTileCupertino({ Key? key, required String operatorName, required void Function(String) onTrainSelected, @@ -71,7 +71,7 @@ class OperatorAutocompleteTileCupertino extends OperatorAutocompleteTile { ), ), ), - CupertinoDivider(), + const CupertinoDivider(), ], ); } diff --git a/lib/components/select_train_suggestions/select_train_suggestions_material.dart b/lib/components/select_train_suggestions/select_train_suggestions_material.dart index 41759b5..a1f9a5d 100644 --- a/lib/components/select_train_suggestions/select_train_suggestions_material.dart +++ b/lib/components/select_train_suggestions/select_train_suggestions_material.dart @@ -14,14 +14,14 @@ class SelectTrainSuggestionsStateMaterial extends SelectTrainSuggestionsState { onTrainSelected(currentInput); }, ), - Divider(), + const Divider(), ], ); } } class OperatorAutocompleteTileMaterial extends OperatorAutocompleteTile { - OperatorAutocompleteTileMaterial({ + const OperatorAutocompleteTileMaterial({ Key? key, required String operatorName, required void Function(String) onTrainSelected, diff --git a/lib/components/slim_app_bar.dart b/lib/components/slim_app_bar.dart index 64b2ba7..41cef14 100644 --- a/lib/components/slim_app_bar.dart +++ b/lib/components/slim_app_bar.dart @@ -5,7 +5,7 @@ class SlimAppBar extends StatelessWidget { final double size; // final Function onBackTap; - SlimAppBar({ + const SlimAppBar({ required this.title, this.size = 24, // this.onBackTap, @@ -28,11 +28,11 @@ class SlimAppBar extends StatelessWidget { mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.stretch, children: [ - Container( + SizedBox( height: size, width: size, child: (ModalRoute.of(context)?.canPop ?? false) - ? BackButtonIcon() + ? const BackButtonIcon() : null, ), Expanded( @@ -43,13 +43,13 @@ class SlimAppBar extends StatelessWidget { title, textAlign: TextAlign.center, style: - Theme.of(context).appBarTheme.textTheme?.caption?.copyWith(color: Theme.of(context).appBarTheme.textTheme?.bodyText2?.color) ?? - Theme.of(context).textTheme.caption?.copyWith(color: Theme.of(context).textTheme.bodyText2?.color), + Theme.of(context).appBarTheme.textTheme?.bodySmall?.copyWith(color: Theme.of(context).appBarTheme.textTheme?.bodyMedium?.color) ?? + Theme.of(context).textTheme.bodySmall?.copyWith(color: Theme.of(context).textTheme.bodyMedium?.color), ), ), ), ), - Container( + SizedBox( height: size, width: size, ), diff --git a/lib/main.dart b/lib/main.dart index 046905b..7dd1c98 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,4 @@ -import 'dart:io' show Platform; -import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:info_tren/models.dart'; import 'package:info_tren/pages/about/about_page.dart'; diff --git a/lib/models/train_data.dart b/lib/models/train_data.dart index 63cec2c..213fa68 100644 --- a/lib/models/train_data.dart +++ b/lib/models/train_data.dart @@ -99,9 +99,9 @@ class Station { : StationArrDepTime.fromJson(json["departure"]), km: json["km"], name: json["name"], - platform: json["platform"] == null ? null : json["platform"], + platform: json["platform"], stoppingTime: - json["stoppingTime"] == null ? null : json["stoppingTime"], + json["stoppingTime"], ); Map toJson() => { @@ -109,8 +109,8 @@ class Station { "departure": departure?.toJson(), "km": km, "name": name, - "platform": platform == null ? null : platform, - "stoppingTime": stoppingTime == null ? null : stoppingTime, + "platform": platform, + "stoppingTime": stoppingTime, }; } @@ -221,9 +221,7 @@ class EnumValues { EnumValues(this.map); Map get reverse { - if (reverseMap == null) { - reverseMap = map.map((k, v) => new MapEntry(v, k)); - } + reverseMap ??= map.map((k, v) => MapEntry(v, k)); return reverseMap!; } } diff --git a/lib/pages/about/about_page_cupertino.dart b/lib/pages/about/about_page_cupertino.dart index 88201d9..110b630 100644 --- a/lib/pages/about/about_page_cupertino.dart +++ b/lib/pages/about/about_page_cupertino.dart @@ -31,14 +31,14 @@ class AboutPageStateCupertino extends AboutPageState { Center( child: Text( packageInfo!.packageName, - style: TextStyle( + style: const TextStyle( inherit: true, fontSize: 14, ), ), ), - Padding( - padding: const EdgeInsets.symmetric(vertical: 8.0), + const Padding( + padding: EdgeInsets.symmetric(vertical: 8.0), child: CupertinoDivider(), ), for (final log in mergedChangelogs) ...[ @@ -50,7 +50,7 @@ class AboutPageStateCupertino extends AboutPageState { Expanded( child: Text( log.version.toString(), - style: TextStyle( + style: const TextStyle( inherit: true, fontSize: 24, ), @@ -69,7 +69,7 @@ class AboutPageStateCupertino extends AboutPageState { padding: const EdgeInsets.all(4), child: Text( currentVersionText, - style: TextStyle( + style: const TextStyle( inherit: true, ), ), @@ -88,7 +88,7 @@ class AboutPageStateCupertino extends AboutPageState { padding: const EdgeInsets.all(4), child: Text( latestVersionText, - style: TextStyle( + style: const TextStyle( inherit: true, color: CupertinoColors.activeGreen, ), @@ -97,7 +97,7 @@ class AboutPageStateCupertino extends AboutPageState { ), if (AboutPageState.DOWNLOAD == 'apk' && log.apkLink != null) CupertinoButton( - padding: EdgeInsets.all(4), + padding: const EdgeInsets.all(4), minSize: 0, onPressed: () { launchUrl( @@ -105,7 +105,7 @@ class AboutPageStateCupertino extends AboutPageState { mode: LaunchMode.externalApplication, ); }, - child: Icon(CupertinoIcons.arrow_down_circle), + child: const Icon(CupertinoIcons.arrow_down_circle), ), ], ), @@ -118,7 +118,7 @@ class AboutPageStateCupertino extends AboutPageState { ), ), ), - CupertinoDivider(), + const CupertinoDivider(), ], ], ), diff --git a/lib/pages/about/about_page_material.dart b/lib/pages/about/about_page_material.dart index 9cba0a5..7b9eef2 100644 --- a/lib/pages/about/about_page_material.dart +++ b/lib/pages/about/about_page_material.dart @@ -1,4 +1,3 @@ -import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:info_tren/pages/about/about_page.dart'; @@ -27,14 +26,14 @@ class AboutPageStateMaterial extends AboutPageState { Center( child: Text( packageInfo!.packageName, - style: Theme.of(context).textTheme.caption, + style: Theme.of(context).textTheme.bodySmall, ), ), // ListTile( // title: Text(versionTitleText), // subtitle: localChangelog.isEmpty ? null : Text(localChangelog.first.title), // ), - Divider(), + const Divider(), for (final log in mergedChangelogs) ...[ Padding( padding: const EdgeInsets.fromLTRB(8, 8, 8, 0), @@ -44,7 +43,7 @@ class AboutPageStateMaterial extends AboutPageState { Expanded( child: Text( log.version.toString(), - style: Theme.of(context).textTheme.headline4, + style: Theme.of(context).textTheme.headlineMedium, ), ), if (localChangelog.isNotEmpty && log.version == localChangelog.first.version) @@ -60,7 +59,7 @@ class AboutPageStateMaterial extends AboutPageState { padding: const EdgeInsets.all(4), child: Text( currentVersionText, - style: TextStyle( + style: const TextStyle( inherit: true, ), ), @@ -79,7 +78,7 @@ class AboutPageStateMaterial extends AboutPageState { padding: const EdgeInsets.all(4), child: Text( latestVersionText, - style: TextStyle( + style: const TextStyle( inherit: true, color: Colors.green, ), @@ -90,13 +89,13 @@ class AboutPageStateMaterial extends AboutPageState { GestureDetector( onSecondaryTap: () { Clipboard.setData(ClipboardData(text: log.apkLink!.toString())); - ScaffoldMessenger.of(context).showSnackBar(SnackBar( + ScaffoldMessenger.of(context).showSnackBar(const SnackBar( content: Text('Link copied to clipboard'), )); }, onLongPress: () { Clipboard.setData(ClipboardData(text: log.apkLink!.toString())); - ScaffoldMessenger.of(context).showSnackBar(SnackBar( + ScaffoldMessenger.of(context).showSnackBar(const SnackBar( content: Text('Link copied to clipboard'), )); }, @@ -107,10 +106,10 @@ class AboutPageStateMaterial extends AboutPageState { ); }, behavior: HitTestBehavior.translucent, - child: Tooltip( + child: const Tooltip( message: 'Download APK', child: Padding( - padding: const EdgeInsets.all(4), + padding: EdgeInsets.all(4), child: Icon(Icons.download), ), ), diff --git a/lib/pages/main/main_page_cupertino.dart b/lib/pages/main/main_page_cupertino.dart index f63e6bf..174bab0 100644 --- a/lib/pages/main/main_page_cupertino.dart +++ b/lib/pages/main/main_page_cupertino.dart @@ -8,7 +8,6 @@ class MainPageCupertino extends MainPageShared { navigationBar: CupertinoNavigationBar( middle: Text(pageTitle), trailing: CupertinoButton( - child: Icon(CupertinoIcons.ellipsis_circle), padding: EdgeInsets.zero, onPressed: () { showCupertinoModalPopup( @@ -26,12 +25,13 @@ class MainPageCupertino extends MainPageShared { onPressed: () { Navigator.of(context).pop(); }, - child: Text('Anulare'), + child: const Text('Anulare'), ), ); }, ); }, + child: const Icon(CupertinoIcons.ellipsis_circle), ), ), child: SafeArea( @@ -39,15 +39,16 @@ class MainPageCupertino extends MainPageShared { child: Column( mainAxisSize: MainAxisSize.min, children: options.map((option) => CupertinoButton.filled( + onPressed: option.action == null ? null : () => option.action!(context), child: Text.rich( TextSpan( children: [ TextSpan(text: option.name), if (option.description != null) ...[ - TextSpan(text: '\n'), + const TextSpan(text: '\n'), TextSpan( text: option.description, - style: TextStyle( + style: const TextStyle( inherit: true, fontSize: 14, ), @@ -57,7 +58,6 @@ class MainPageCupertino extends MainPageShared { ), textAlign: TextAlign.center, ), - onPressed: option.action == null ? null : () => option.action!(context), )).map((w) => Padding( padding: const EdgeInsets.fromLTRB(4, 2, 4, 2), child: SizedBox( diff --git a/lib/pages/main/main_page_material.dart b/lib/pages/main/main_page_material.dart index 9ff1609..c44b11a 100644 --- a/lib/pages/main/main_page_material.dart +++ b/lib/pages/main/main_page_material.dart @@ -10,11 +10,11 @@ class MainPageMaterial extends MainPageShared { centerTitle: true, actions: [ PopupMenuButton( - icon: Icon(Icons.more_vert), + icon: const Icon(Icons.more_vert), tooltip: moreOptionsText, itemBuilder: (_) => popupMenu.asMap().entries.map((e) => PopupMenuItem( - child: Text(e.value.name), value: e.key, + child: Text(e.value.name), )).toList(), onSelected: (index) { popupMenu[index].action?.call(context); @@ -36,7 +36,7 @@ class MainPageMaterial extends MainPageShared { padding: const EdgeInsets.all(8.0), child: Text( option.name, - style: Theme.of(context).textTheme.headline4?.copyWith( + style: Theme.of(context).textTheme.headlineMedium?.copyWith( color: Theme.of(context).colorScheme.onSecondaryContainer, ), textAlign: TextAlign.center, diff --git a/lib/pages/station_arrdep_page/select_station/select_station_cupertino.dart b/lib/pages/station_arrdep_page/select_station/select_station_cupertino.dart index 80e8516..49b3f16 100644 --- a/lib/pages/station_arrdep_page/select_station/select_station_cupertino.dart +++ b/lib/pages/station_arrdep_page/select_station/select_station_cupertino.dart @@ -6,7 +6,7 @@ class SelectStationPageStateCupertino extends SelectStationPageState { @override Widget build(BuildContext context) { return CupertinoPageScaffold( - navigationBar: CupertinoNavigationBar( + navigationBar: const CupertinoNavigationBar( middle: Text(SelectStationPageState.pageTitle), ), child: SafeArea( @@ -38,7 +38,7 @@ class SelectStationPageStateCupertino extends SelectStationPageState { ), onTap: () => onSuggestionSelected(filteredStations[index]), ), - CupertinoDivider(), + const CupertinoDivider(), ], ); }, diff --git a/lib/pages/station_arrdep_page/select_station/select_station_material.dart b/lib/pages/station_arrdep_page/select_station/select_station_material.dart index 7d09fad..22bbb4f 100644 --- a/lib/pages/station_arrdep_page/select_station/select_station_material.dart +++ b/lib/pages/station_arrdep_page/select_station/select_station_material.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:flutter/src/widgets/framework.dart'; import 'package:info_tren/pages/station_arrdep_page/select_station/select_station.dart'; class SelectStationPageStateMaterial extends SelectStationPageState { @@ -7,7 +6,7 @@ class SelectStationPageStateMaterial extends SelectStationPageState { Widget build(BuildContext context) { return Scaffold( appBar: AppBar( - title: Text(SelectStationPageState.pageTitle), + title: const Text(SelectStationPageState.pageTitle), centerTitle: true, ), body: SafeArea( @@ -20,7 +19,7 @@ class SelectStationPageStateMaterial extends SelectStationPageState { child: TextField( controller: textEditingController, autofocus: true, - decoration: InputDecoration( + decoration: const InputDecoration( border: OutlineInputBorder(), labelText: SelectStationPageState.textFieldLabel, ), @@ -39,7 +38,7 @@ class SelectStationPageStateMaterial extends SelectStationPageState { title: Text(filteredStations[index]), onTap: () => onSuggestionSelected(filteredStations[index]), ), - Divider( + const Divider( height: 1, ), ], diff --git a/lib/pages/station_arrdep_page/view_station/view_station_cupertino.dart b/lib/pages/station_arrdep_page/view_station/view_station_cupertino.dart index b652dd6..bf7d18a 100644 --- a/lib/pages/station_arrdep_page/view_station/view_station_cupertino.dart +++ b/lib/pages/station_arrdep_page/view_station/view_station_cupertino.dart @@ -14,7 +14,7 @@ class ViewStationPageStateCupertino extends ViewStationPageState { ), child: snapshot.hasData ? CupertinoTabScaffold( tabBar: CupertinoTabBar( - items: [ + items: const [ BottomNavigationBarItem( icon: Icon(CupertinoIcons.arrow_down), label: ViewStationPageState.arrivals, @@ -56,17 +56,16 @@ class ViewStationPageStateCupertino extends ViewStationPageState { return GestureDetector( onTap: () => onTrainTapped(item.train), child: CupertinoFormRow( - child: Text('${item.time.toLocal().hour.toString().padLeft(2, '0')}:${item.time.toLocal().minute.toString().padLeft(2, '0')}'), prefix: Text.rich( TextSpan( children: [ TextSpan( text: item.train.rank, style: TextStyle( - color: item.train.rank.startsWith('IR') ? Color.fromARGB(255, 255, 0, 0) : null, + color: item.train.rank.startsWith('IR') ? const Color.fromARGB(255, 255, 0, 0) : null, ), ), - TextSpan(text: ' '), + const TextSpan(text: ' '), TextSpan(text: item.train.number,), ], ), @@ -74,12 +73,13 @@ class ViewStationPageStateCupertino extends ViewStationPageState { helper: Text.rich( TextSpan( children: [ - TextSpan(text: ViewStationPageState.arrivesFrom), - TextSpan(text: ' '), + const TextSpan(text: ViewStationPageState.arrivesFrom), + const TextSpan(text: ' '), TextSpan(text: item.train.terminus), ], ), ), + child: Text('${item.time.toLocal().hour.toString().padLeft(2, '0')}:${item.time.toLocal().minute.toString().padLeft(2, '0')}'), ), ); } @@ -89,17 +89,16 @@ class ViewStationPageStateCupertino extends ViewStationPageState { return GestureDetector( onTap: () => onTrainTapped(item.train), child: CupertinoFormRow( - child: Text('${item.time.toLocal().hour.toString().padLeft(2, '0')}:${item.time.toLocal().minute.toString().padLeft(2, '0')}'), prefix: Text.rich( TextSpan( children: [ TextSpan( text: item.train.rank, style: TextStyle( - color: item.train.rank.startsWith('IR') ? Color.fromARGB(255, 255, 0, 0) : null, + color: item.train.rank.startsWith('IR') ? const Color.fromARGB(255, 255, 0, 0) : null, ), ), - TextSpan(text: ' '), + const TextSpan(text: ' '), TextSpan(text: item.train.number,), ], ), @@ -107,12 +106,13 @@ class ViewStationPageStateCupertino extends ViewStationPageState { helper: Text.rich( TextSpan( children: [ - TextSpan(text: ViewStationPageState.departsTo), - TextSpan(text: ' '), + const TextSpan(text: ViewStationPageState.departsTo), + const TextSpan(text: ' '), TextSpan(text: item.train.terminus), ], ), ), + child: Text('${item.time.toLocal().hour.toString().padLeft(2, '0')}:${item.time.toLocal().minute.toString().padLeft(2, '0')}'), ), ); } diff --git a/lib/pages/station_arrdep_page/view_station/view_station_material.dart b/lib/pages/station_arrdep_page/view_station/view_station_material.dart index 76c0446..06db745 100644 --- a/lib/pages/station_arrdep_page/view_station/view_station_material.dart +++ b/lib/pages/station_arrdep_page/view_station/view_station_material.dart @@ -21,7 +21,7 @@ class ViewStationPageStateMaterial extends ViewStationPageState { ? Container() : CustomScrollView( slivers: [ - SliverToBoxAdapter(child: SafeArea(child: Container(), left: false, bottom: false, right: false,),), + SliverToBoxAdapter(child: SafeArea(left: false, bottom: false, right: false,child: Container(),),), SliverList( delegate: SliverChildBuilderDelegate( (context, index) { @@ -33,7 +33,7 @@ class ViewStationPageStateMaterial extends ViewStationPageState { ], ), bottomNavigationBar: snapshot.hasData ? BottomNavigationBar( - items: [ + items: const [ BottomNavigationBarItem( icon: Icon(Icons.arrow_downward), label: ViewStationPageState.arrivals, @@ -67,7 +67,7 @@ class ViewStationPageStateMaterial extends ViewStationPageState { '${item.time.toLocal().hour.toString().padLeft(2, '0')}:${item.time.toLocal().minute.toString().padLeft(2, '0')}', style: TextStyle( inherit: true, - fontFeatures: [ + fontFeatures: const [ FontFeature.tabularFigures(), ], decoration: item.status.cancelled || item.status.delay != 0 ? TextDecoration.lineThrough : null, @@ -83,7 +83,7 @@ class ViewStationPageStateMaterial extends ViewStationPageState { '${newTime.toLocal().hour.toString().padLeft(2, '0')}:${newTime.toLocal().minute.toString().padLeft(2, '0')}', style: TextStyle( inherit: true, - fontFeatures: [ + fontFeatures: const [ FontFeature.tabularFigures(), ], color: delay ? Colors.red : Colors.green, @@ -104,10 +104,10 @@ class ViewStationPageStateMaterial extends ViewStationPageState { TextSpan( text: item.train.rank, style: TextStyle( - color: item.train.rank.startsWith('IR') ? Color.fromARGB(255, 255, 0, 0) : null, + color: item.train.rank.startsWith('IR') ? const Color.fromARGB(255, 255, 0, 0) : null, ), ), - TextSpan(text: ' '), + const TextSpan(text: ' '), TextSpan(text: item.train.number,), ], ), @@ -122,21 +122,21 @@ class ViewStationPageStateMaterial extends ViewStationPageState { ? (arrival ? ViewStationPageState.arrivedFrom : ViewStationPageState.departedTo) : (arrival ? ViewStationPageState.arrivesFrom : ViewStationPageState.departsTo) ), - TextSpan(text: ' '), + const TextSpan(text: ' '), TextSpan(text: item.train.terminus), if (item.status.delay != 0) ...[ - TextSpan(text: '\n'), + const TextSpan(text: '\n'), if (item.status.delay.abs() >= 60) ...[ TextSpan(text: (item.status.delay.abs() ~/ 60).toString()), TextSpan(text: item.status.delay.abs() >= 120 ? ' ore' : ' oră'), if (item.status.delay.abs() % 60 != 0) - TextSpan(text: ' și '), + const TextSpan(text: ' și '), ], TextSpan(text: (item.status.delay.abs() % 60).toString()), TextSpan(text: item.status.delay.abs() > 1 ? ' minute' : ' minut'), - TextSpan(text: ' '), + const TextSpan(text: ' '), if (item.status.delay > 0) - TextSpan( + const TextSpan( text: 'întârziere', style: TextStyle( inherit: true, @@ -144,7 +144,7 @@ class ViewStationPageStateMaterial extends ViewStationPageState { ), ) else - TextSpan( + const TextSpan( text: 'mai devreme', style: TextStyle( inherit: true, diff --git a/lib/pages/train_info_page/select_train/select_train.dart b/lib/pages/train_info_page/select_train/select_train.dart index 4bd84af..a1afe87 100644 --- a/lib/pages/train_info_page/select_train/select_train.dart +++ b/lib/pages/train_info_page/select_train/select_train.dart @@ -1,4 +1,3 @@ -import 'dart:io' show Platform; import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; @@ -9,14 +8,13 @@ import 'package:info_tren/pages/train_info_page/select_train/select_train_materi import 'package:info_tren/pages/train_info_page/view_train/train_info.dart'; import 'package:info_tren/utils/default_ui_design.dart'; import 'package:info_tren/api/trains.dart' as apiTrains; -import 'package:tuple/tuple.dart'; -typedef TrainSelectedCallback(int trainNumber); +typedef TrainSelectedCallback = Function(int trainNumber); class SelectTrainPage extends StatefulWidget { final UiDesign? uiDesign; - SelectTrainPage({Key? key, this.uiDesign}) : super(key: key); + const SelectTrainPage({Key? key, this.uiDesign}) : super(key: key); static String routeName = "/trainInfo/selectTrain"; diff --git a/lib/pages/train_info_page/select_train/select_train_material.dart b/lib/pages/train_info_page/select_train/select_train_material.dart index 2edc436..078701e 100644 --- a/lib/pages/train_info_page/select_train/select_train_material.dart +++ b/lib/pages/train_info_page/select_train/select_train_material.dart @@ -21,7 +21,7 @@ class SelectTrainPageStateMaterial extends SelectTrainPageState { controller: trainNoController, autofocus: true, decoration: InputDecoration( - border: OutlineInputBorder(), + border: const OutlineInputBorder(), labelText: textFieldLabel, ), inputFormatters: [ diff --git a/lib/pages/train_info_page/view_train/train_info.dart b/lib/pages/train_info_page/view_train/train_info.dart index 80a4525..23640e1 100644 --- a/lib/pages/train_info_page/view_train/train_info.dart +++ b/lib/pages/train_info_page/view_train/train_info.dart @@ -17,7 +17,7 @@ class TrainInfo extends StatelessWidget { final String trainNumber; final DateTime? date; - TrainInfo({Key? key, required this.trainNumber, this.date, this.uiDesign}): super(key: key); + const TrainInfo({Key? key, required this.trainNumber, this.date, this.uiDesign}): super(key: key); @override Widget build(BuildContext context) { @@ -85,7 +85,7 @@ abstract class TrainInfoError extends StatelessWidget { final Object error; final Future Function()? refresh; - TrainInfoError({required this.title, required this.error, this.refresh}); + const TrainInfoError({required this.title, required this.error, this.refresh}); } abstract class DisplayTrainYesterdayWarningCommon extends StatelessWidget { @@ -94,5 +94,5 @@ abstract class DisplayTrainYesterdayWarningCommon extends StatelessWidget { final void Function() onViewYesterdayTrain; - DisplayTrainYesterdayWarningCommon(this.onViewYesterdayTrain); + const DisplayTrainYesterdayWarningCommon(this.onViewYesterdayTrain); } diff --git a/lib/pages/train_info_page/view_train/train_info_cupertino.dart b/lib/pages/train_info_page/view_train/train_info_cupertino.dart index 52e9cb7..5b1039a 100644 --- a/lib/pages/train_info_page/view_train/train_info_cupertino.dart +++ b/lib/pages/train_info_page/view_train/train_info_cupertino.dart @@ -31,7 +31,7 @@ class TrainInfoLoadingCupertino extends TrainInfoLoading { } class TrainInfoErrorCupertino extends TrainInfoError { - TrainInfoErrorCupertino({ + const TrainInfoErrorCupertino({ required Object error, required String title, Future Function()? refresh, @@ -56,7 +56,7 @@ class TrainInfoErrorCupertino extends TrainInfoError { Padding( padding: const EdgeInsets.all(8), child: CupertinoButton( - child: Text('Retry'), + child: const Text('Retry'), onPressed: () => refresh!(), ), ), @@ -73,7 +73,7 @@ class TrainInfoCupertino extends StatelessWidget { final bool? isRefreshing; final void Function()? onViewYesterdayTrain; - TrainInfoCupertino({ + const TrainInfoCupertino({ required this.trainData, this.refresh, this.isRefreshing, @@ -85,10 +85,10 @@ class TrainInfoCupertino extends StatelessWidget { return CupertinoPageScaffold( navigationBar: CupertinoNavigationBar( middle: Text("Informații despre ${trainData.rank} ${trainData.number}"), - trailing: refresh == null ? null : isRefreshing == true ? CupertinoActivityIndicator() : CupertinoButton( + trailing: refresh == null ? null : isRefreshing == true ? const CupertinoActivityIndicator() : CupertinoButton( padding: const EdgeInsets.all(0), alignment: Alignment.center, - child: Icon(CupertinoIcons.refresh), + child: const Icon(CupertinoIcons.refresh), onPressed: () => refresh!(), ), ), @@ -121,11 +121,11 @@ class TrainInfoCupertino extends StatelessWidget { return Column( mainAxisSize: MainAxisSize.min, children: [ - Container( + SizedBox( height: pulledExtent, child: Column( children: [ - Container( + SizedBox( height: min( refreshIndicatorExtent, pulledExtent), child: Center( @@ -136,12 +136,12 @@ class TrainInfoCupertino extends StatelessWidget { return Container(); } else if (mode == RefreshIndicatorMode.done) { - return Text('Refreshed!'); + return const Text('Refreshed!'); } else if (mode == RefreshIndicatorMode.drag) { return Row( mainAxisSize: MainAxisSize.min, - children: [ + children: const [ CupertinoActivityIndicator( animating: false, ), @@ -152,7 +152,7 @@ class TrainInfoCupertino extends StatelessWidget { RefreshIndicatorMode.armed) { return Row( mainAxisSize: MainAxisSize.min, - children: [ + children: const [ CupertinoActivityIndicator( animating: false, ), @@ -162,7 +162,7 @@ class TrainInfoCupertino extends StatelessWidget { } else { return Row( mainAxisSize: MainAxisSize.min, - children: [ + children: const [ CupertinoActivityIndicator(), Text('Refreshing'), ], @@ -195,7 +195,7 @@ class TrainInfoCupertino extends StatelessWidget { DisplayTrainDeparture( trainData: trainData, ), - SliverToBoxAdapter( + const SliverToBoxAdapter( child: CupertinoDivider( color: FOREGROUND_WHITE, ), @@ -203,7 +203,7 @@ class TrainInfoCupertino extends StatelessWidget { DisplayTrainLastInfo( trainData: trainData, ), - SliverToBoxAdapter( + const SliverToBoxAdapter( child: CupertinoDivider(), ), SliverToBoxAdapter( @@ -221,7 +221,7 @@ class TrainInfoCupertino extends StatelessWidget { // Expanded( // child: DisplayTrainDestination(trainData: trainData,), // ), - SizedBox( + const SizedBox( height: double.infinity, child: CupertinoVerticalDivider(), ), @@ -256,7 +256,7 @@ class TrainInfoCupertino extends StatelessWidget { // ), // ), // ), - SliverToBoxAdapter( + const SliverToBoxAdapter( child: CupertinoDivider( color: FOREGROUND_WHITE, ), @@ -265,7 +265,7 @@ class TrainInfoCupertino extends StatelessWidget { SliverToBoxAdapter( child: DisplayTrainYesterdayWarningCupertino(onViewYesterdayTrain!), ), - SliverToBoxAdapter( + const SliverToBoxAdapter( child: CupertinoDivider( color: FOREGROUND_WHITE, ), @@ -394,7 +394,7 @@ class TrainInfoCupertino extends StatelessWidget { class DisplayTrainID extends StatelessWidget { final TrainData trainData; - DisplayTrainID({required this.trainData}); + const DisplayTrainID({required this.trainData}); @override Widget build(BuildContext context) { @@ -408,10 +408,10 @@ class DisplayTrainID extends StatelessWidget { TextSpan( text: trainData.rank, style: TextStyle( - color: trainData.rank.startsWith('IR') ? Color.fromARGB(255, 255, 0, 0) : null, + color: trainData.rank.startsWith('IR') ? const Color.fromARGB(255, 255, 0, 0) : null, ), ), - TextSpan(text: ' '), + const TextSpan(text: ' '), TextSpan(text: trainData.number,), ], ), @@ -426,7 +426,7 @@ class DisplayTrainID extends StatelessWidget { class DisplayTrainRoute extends StatelessWidget { final TrainData trainData; - DisplayTrainRoute({required this.trainData}); + const DisplayTrainRoute({required this.trainData}); @override Widget build(BuildContext context) { @@ -447,7 +447,7 @@ class DisplayTrainRoute extends StatelessWidget { ), ), ), - Center(child: Text("-")), + const Center(child: Text("-")), Expanded( child: Center( child: Padding( @@ -472,7 +472,7 @@ class DisplayTrainRoute extends StatelessWidget { class DisplayTrainOperator extends StatelessWidget { final TrainData trainData; - DisplayTrainOperator({required this.trainData}); + const DisplayTrainOperator({required this.trainData}); @override Widget build(BuildContext context) { @@ -493,7 +493,7 @@ class DisplayTrainOperator extends StatelessWidget { class DisplayTrainDeparture extends StatelessWidget { final TrainData trainData; - DisplayTrainDeparture({required this.trainData}); + const DisplayTrainDeparture({required this.trainData}); @override Widget build(BuildContext context) { @@ -517,7 +517,7 @@ class DisplayTrainDeparture extends StatelessWidget { class DisplayTrainLastInfo extends StatelessWidget { final TrainData trainData; - DisplayTrainLastInfo({required this.trainData}); + const DisplayTrainLastInfo({required this.trainData}); @override Widget build(BuildContext context) { @@ -691,7 +691,7 @@ class DisplayTrainLastInfo extends StatelessWidget { class DisplayTrainDestination extends StatelessWidget { final TrainData trainData; - DisplayTrainDestination({required this.trainData}); + const DisplayTrainDestination({required this.trainData}); @override Widget build(BuildContext context) { @@ -709,7 +709,7 @@ class DisplayTrainDestination extends StatelessWidget { textAlign: TextAlign.center, ), ), - CupertinoDivider( + const CupertinoDivider( color: Color.fromRGBO(15, 15, 15, 1), ), Padding( @@ -749,20 +749,20 @@ class DisplayTrainDestination extends StatelessWidget { TextSpan( text: 'la', children: [ - TextSpan(text: ' '), + const TextSpan(text: ' '), TextSpan( text: '${arrival.hour.toString().padLeft(2, "0")}:${arrival.minute.toString().padLeft(2, "0")}', style: delay == 0 ? null - : TextStyle( + : const TextStyle( decoration: TextDecoration.lineThrough, ), ), if (delay != 0) ...[ - TextSpan(text: ' '), + const TextSpan(text: ' '), TextSpan( - text: '$arrivalWithDelayString', + text: arrivalWithDelayString, style: TextStyle( color: delay > 0 ? CupertinoColors.systemRed @@ -791,7 +791,7 @@ class DisplayTrainDestination extends StatelessWidget { class DisplayTrainRouteDistance extends StatelessWidget { final TrainData trainData; - DisplayTrainRouteDistance({required this.trainData}); + const DisplayTrainRouteDistance({required this.trainData}); @override Widget build(BuildContext context) { @@ -821,7 +821,7 @@ class DisplayTrainRouteDistance extends StatelessWidget { class DisplayTrainRouteDuration extends StatelessWidget { final TrainData trainData; - DisplayTrainRouteDuration({required this.trainData}); + const DisplayTrainRouteDuration({required this.trainData}); @override Widget build(BuildContext context) { @@ -848,10 +848,11 @@ class DisplayTrainRouteDuration extends StatelessWidget { if (duration.inDays > 0) { firstWritten = true; - if (duration.inDays == 1) + if (duration.inDays == 1) { durationString.write("1 zi"); - else + } else { durationString.write("${duration.inDays} zile"); + } duration -= Duration(days: duration.inDays); } @@ -860,10 +861,11 @@ class DisplayTrainRouteDuration extends StatelessWidget { durationString.write(", "); } firstWritten = true; - if (duration.inHours == 1) + if (duration.inHours == 1) { durationString.write("1 oră"); - else + } else { durationString.write("${duration.inHours} ore"); + } duration -= Duration(hours: duration.inHours); } @@ -872,10 +874,11 @@ class DisplayTrainRouteDuration extends StatelessWidget { durationString.write(", "); } firstWritten = true; - if (duration.inMinutes == 1) + if (duration.inMinutes == 1) { durationString.write("1 minut"); - else + } else { durationString.write("${duration.inMinutes} minute"); + } duration -= Duration(minutes: duration.inMinutes); } @@ -894,7 +897,7 @@ class DisplayTrainRouteDuration extends StatelessWidget { } class DisplayTrainYesterdayWarningCupertino extends DisplayTrainYesterdayWarningCommon { - DisplayTrainYesterdayWarningCupertino(void Function() onViewYesterdayTrain) : super(onViewYesterdayTrain); + const DisplayTrainYesterdayWarningCupertino(void Function() onViewYesterdayTrain) : super(onViewYesterdayTrain); @override Widget build(BuildContext context) { @@ -906,11 +909,11 @@ class DisplayTrainYesterdayWarningCupertino extends DisplayTrainYesterdayWarning child: Text.rich( TextSpan( children: [ - TextSpan(text: DisplayTrainYesterdayWarningCommon.trainDidNotDepart,), - TextSpan(text: '\n'), + const TextSpan(text: DisplayTrainYesterdayWarningCommon.trainDidNotDepart,), + const TextSpan(text: '\n'), TextSpan( text: DisplayTrainYesterdayWarningCommon.seeYesterdayTrain, - style: TextStyle( + style: const TextStyle( color: CupertinoColors.link, ), recognizer: TapGestureRecognizer() @@ -929,7 +932,7 @@ class DisplayTrainYesterdayWarningCupertino extends DisplayTrainYesterdayWarning class DisplayTrainStations extends StatelessWidget { final TrainData trainData; - DisplayTrainStations({ + const DisplayTrainStations({ required this.trainData, }); @@ -939,14 +942,14 @@ class DisplayTrainStations extends StatelessWidget { delegate: SliverChildBuilderDelegate( (context, index) { if (index.isOdd) { - return CupertinoDivider(); + return const CupertinoDivider(); } else { final itemIndex = index ~/ 2; return IndexedSemantics( + index: itemIndex, child: DisplayTrainStation( station: trainData.stations[itemIndex], ), - index: itemIndex, ); } }, diff --git a/lib/pages/train_info_page/view_train/train_info_cupertino_DisplayTrainStation.dart b/lib/pages/train_info_page/view_train/train_info_cupertino_DisplayTrainStation.dart index 5868b58..7342e35 100644 --- a/lib/pages/train_info_page/view_train/train_info_cupertino_DisplayTrainStation.dart +++ b/lib/pages/train_info_page/view_train/train_info_cupertino_DisplayTrainStation.dart @@ -5,7 +5,7 @@ import 'package:info_tren/models.dart'; class DisplayTrainStation extends StatelessWidget { final Station station; - DisplayTrainStation({required this.station}); + const DisplayTrainStation({required this.station}); @override Widget build(BuildContext context) { @@ -45,7 +45,7 @@ class DisplayTrainStation extends StatelessWidget { final isDelayed = delay > 0 && real == true; final isOnTime = delay <= 0 && real == true; - final isNotScheduled = false; + const isNotScheduled = false; return CupertinoBadge( text: station.km.toString(), @@ -84,7 +84,7 @@ class DisplayTrainStation extends StatelessWidget { class Title extends StatelessWidget { final Station station; - Title({ + const Title({ required this.station }); @@ -105,7 +105,7 @@ class Title extends StatelessWidget { class Time extends StatelessWidget { final Station station; - Time({ + const Time({ required this.station, }); @@ -158,7 +158,7 @@ class ArrivalTime extends StatelessWidget { final Station station; final bool finalStation; - ArrivalTime({ + const ArrivalTime({ required this.station, this.finalStation = false, }); @@ -176,7 +176,7 @@ class ArrivalTime extends StatelessWidget { ), ), Container(width: 2,), - Text("sosire la "), + const Text("sosire la "), ArrivalTime(station: station,), Expanded(child: Container(),), ], @@ -240,7 +240,7 @@ class ArrivalTime extends StatelessWidget { class StopTime extends StatelessWidget { final Station station; - StopTime({ + const StopTime({ required this.station, }); @@ -250,7 +250,7 @@ class StopTime extends StatelessWidget { return Column( mainAxisSize: MainAxisSize.min, children: [ - Text( + const Text( "staționează pentru", textAlign: TextAlign.center, ), @@ -270,13 +270,13 @@ class StopTime extends StatelessWidget { } else if (stopsForInt < 20) { return Text( - '$stopsForInt ' + (minutes ? 'minute' : 'seconde'), + '$stopsForInt ${minutes ? 'minute' : 'seconde'}', textAlign: TextAlign.center, ); } else { return Text( - '$stopsForInt de ' + (minutes ? 'minute' : 'secunde'), + '$stopsForInt de ${minutes ? 'minute' : 'secunde'}', textAlign: TextAlign.center, ); } @@ -291,7 +291,7 @@ class DepartureTime extends StatelessWidget { final Station station; final bool firstStation; - DepartureTime({ + const DepartureTime({ required this.station, this.firstStation = false, }); @@ -303,7 +303,7 @@ class DepartureTime extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ Expanded(child: Container(),), - Text("plecare la "), + const Text("plecare la "), DepartureTime(station: station,), Container(width: 2,), Text( @@ -373,7 +373,7 @@ class DepartureTime extends StatelessWidget { class Delay extends StatelessWidget { final Station station; - Delay({ + const Delay({ required this.station, }); @@ -387,8 +387,9 @@ class Delay extends StatelessWidget { delay = station.departure?.status?.delay; } - if (delay == 0 || delay == null) return Container(); - else if (delay > 0) { + if (delay == 0 || delay == null) { + return Container(); + } else if (delay > 0) { return Text( "$delay ${delay == 1 ? 'minut' : 'minute'} întârziere", style: CupertinoTheme.of(context).textTheme.textStyle.copyWith( diff --git a/lib/pages/train_info_page/view_train/train_info_material.dart b/lib/pages/train_info_page/view_train/train_info_material.dart index 0716406..0e96ddd 100644 --- a/lib/pages/train_info_page/view_train/train_info_material.dart +++ b/lib/pages/train_info_page/view_train/train_info_material.dart @@ -29,7 +29,7 @@ class TrainInfoLoadingMaterial extends TrainInfoLoading { } class TrainInfoErrorMaterial extends TrainInfoError { - TrainInfoErrorMaterial({ + const TrainInfoErrorMaterial({ required Object error, required String title, Future Function()? refresh, @@ -54,7 +54,7 @@ class TrainInfoErrorMaterial extends TrainInfoError { Padding( padding: const EdgeInsets.all(8), child: ElevatedButton( - child: Text('Retry'), + child: const Text('Retry'), onPressed: () => refresh!(), ), ), @@ -73,7 +73,7 @@ class TrainInfoMaterial extends StatelessWidget { final Future Function()? refresh; final void Function()? onViewYesterdayTrain; - TrainInfoMaterial({ + const TrainInfoMaterial({ required this.trainData, this.refresh, this.onViewYesterdayTrain, @@ -219,7 +219,7 @@ class TrainInfoMaterial extends StatelessWidget { class DisplayTrainID extends StatelessWidget { final TrainData trainData; - DisplayTrainID({required this.trainData}); + const DisplayTrainID({required this.trainData}); @override Widget build(BuildContext context) { @@ -230,21 +230,21 @@ class DisplayTrainID extends StatelessWidget { text: trainData.rank, style: TextStyle( color: trainData.rank.startsWith('IR') - ? Color.fromARGB(255, 255, 0, 0) + ? const Color.fromARGB(255, 255, 0, 0) : null, ), ), - TextSpan(text: ' '), + const TextSpan(text: ' '), TextSpan( text: trainData.number, ), ], ), style: (isSmallScreen(context) - ? Theme.of(context).textTheme.headline4 - : Theme.of(context).textTheme.headline3) + ? Theme.of(context).textTheme.headlineMedium + : Theme.of(context).textTheme.displaySmall) ?.copyWith( - color: Theme.of(context).textTheme.bodyText2?.color, + color: Theme.of(context).textTheme.bodyMedium?.color, fontWeight: FontWeight.bold, ), textAlign: TextAlign.center, @@ -255,13 +255,13 @@ class DisplayTrainID extends StatelessWidget { class DisplayTrainOperator extends StatelessWidget { final TrainData trainData; - DisplayTrainOperator({required this.trainData}); + const DisplayTrainOperator({required this.trainData}); @override Widget build(BuildContext context) { return Text( trainData.operator, - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( fontStyle: FontStyle.italic, fontSize: isSmallScreen(context) ? 12 : 14, ), @@ -273,7 +273,7 @@ class DisplayTrainOperator extends StatelessWidget { class DisplayTrainRoute extends StatelessWidget { final TrainData trainData; - DisplayTrainRoute({required this.trainData}); + const DisplayTrainRoute({required this.trainData}); @override Widget build(BuildContext context) { @@ -285,21 +285,21 @@ class DisplayTrainRoute extends StatelessWidget { padding: const EdgeInsets.all(4), child: Text( trainData.route.from, - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( fontSize: 16, ), ), ), ), ), - Center(child: Text("-")), + const Center(child: Text("-")), Expanded( child: Center( child: Padding( padding: const EdgeInsets.all(4), child: Text( trainData.route.to, - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( fontSize: 16, ), textAlign: TextAlign.right, @@ -315,7 +315,7 @@ class DisplayTrainRoute extends StatelessWidget { class DisplayTrainDeparture extends StatelessWidget { final TrainData trainData; - DisplayTrainDeparture({required this.trainData}); + const DisplayTrainDeparture({required this.trainData}); @override Widget build(BuildContext context) { @@ -324,7 +324,7 @@ class DisplayTrainDeparture extends StatelessWidget { child: Text( // "Plecare în ${dataPlecare.day.toString().padLeft(2, '0')}.${dataPlecare.month.toString().padLeft(2, '0')}.${dataPlecare.year.toString().padLeft(4, '0')}", "Plecare în ${trainData.date}", - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( fontStyle: FontStyle.italic, fontWeight: FontWeight.w200, fontSize: isSmallScreen(context) ? 14 : 16, @@ -338,7 +338,7 @@ class DisplayTrainDeparture extends StatelessWidget { class DisplayTrainLastInfo extends StatelessWidget { final TrainData trainData; - DisplayTrainLastInfo({required this.trainData}); + const DisplayTrainLastInfo({required this.trainData}); @override Widget build(BuildContext context) { @@ -357,7 +357,7 @@ class DisplayTrainLastInfo extends StatelessWidget { padding: const EdgeInsets.all(2), child: Text( "Ultima informație", - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( fontSize: isSmallScreen(context) ? 20 : 22, fontWeight: FontWeight.bold, ), @@ -370,7 +370,7 @@ class DisplayTrainLastInfo extends StatelessWidget { padding: const EdgeInsets.all(4), child: Text( trainData.status!.station, - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( fontSize: isSmallScreen(context) ? 16 : 18, ), textAlign: TextAlign.left, @@ -418,7 +418,7 @@ class DisplayTrainLastInfo extends StatelessWidget { return Text( "$data ${data == 1 ? 'minut' : 'minute'} întârziere", style: - Theme.of(context).textTheme.bodyText2?.copyWith( + Theme.of(context).textTheme.bodyMedium?.copyWith( fontSize: isSmallScreen(context) ? 14 : 16, color: Colors.red.shade300, ), @@ -427,7 +427,7 @@ class DisplayTrainLastInfo extends StatelessWidget { return Text( "${-data} ${data == -1 ? 'minut' : 'minute'} mai devreme", style: - Theme.of(context).textTheme.bodyText2?.copyWith( + Theme.of(context).textTheme.bodyMedium?.copyWith( fontSize: isSmallScreen(context) ? 14 : 16, color: Colors.green.shade300, ), @@ -530,7 +530,7 @@ class DisplayTrainLastInfo extends StatelessWidget { class DisplayTrainDestination extends StatelessWidget { final TrainData trainData; - DisplayTrainDestination({required this.trainData}); + const DisplayTrainDestination({required this.trainData}); @override Widget build(BuildContext context) { @@ -547,7 +547,7 @@ class DisplayTrainDestination extends StatelessWidget { padding: const EdgeInsets.all(4), child: Text( "Destinația", - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( fontSize: isSmallScreen(context) ? 20 : 22, fontWeight: FontWeight.bold, ), @@ -558,7 +558,7 @@ class DisplayTrainDestination extends StatelessWidget { padding: const EdgeInsets.fromLTRB(4, 0, 4, 0), child: Text( destination.name, - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( fontSize: isSmallScreen(context) ? 18 : 20, fontWeight: FontWeight.w500, ), @@ -591,20 +591,20 @@ class DisplayTrainDestination extends StatelessWidget { TextSpan( text: 'la', children: [ - TextSpan(text: ' '), + const TextSpan(text: ' '), TextSpan( text: '${arrival.hour.toString().padLeft(2, '0')}:${arrival.minute.toString().padLeft(2, '0')}', style: delay == 0 ? null - : TextStyle( + : const TextStyle( decoration: TextDecoration.lineThrough, ), ), if (delay != 0) ...[ - TextSpan(text: ' '), + const TextSpan(text: ' '), TextSpan( - text: '$arrivalWithDelayString', + text: arrivalWithDelayString, style: TextStyle( color: delay > 0 ? Colors.red.shade300 @@ -614,7 +614,7 @@ class DisplayTrainDestination extends StatelessWidget { ] ], ), - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( fontSize: isSmallScreen(context) ? 14 : 16, ), textAlign: TextAlign.center, @@ -634,7 +634,7 @@ class DisplayTrainDestination extends StatelessWidget { class DisplayTrainRouteDistance extends StatelessWidget { final TrainData trainData; - DisplayTrainRouteDistance({required this.trainData}); + const DisplayTrainRouteDistance({required this.trainData}); @override Widget build(BuildContext context) { @@ -647,7 +647,7 @@ class DisplayTrainRouteDistance extends StatelessWidget { children: [ Text( "Distanța rutei", - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( fontSize: isSmallScreen(context) ? 20 : 22, fontWeight: FontWeight.bold, ), @@ -655,7 +655,7 @@ class DisplayTrainRouteDistance extends StatelessWidget { ), Text( "${trainData.stations.last.km} km", - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( fontSize: isSmallScreen(context) ? 18 : 20, ), textAlign: TextAlign.center, @@ -671,7 +671,7 @@ class DisplayTrainRouteDistance extends StatelessWidget { class DisplayTrainRouteDuration extends StatelessWidget { final TrainData trainData; - DisplayTrainRouteDuration({required this.trainData}); + const DisplayTrainRouteDuration({required this.trainData}); @override Widget build(BuildContext context) { @@ -684,7 +684,7 @@ class DisplayTrainRouteDuration extends StatelessWidget { children: [ Text( "Durata rutei", - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( fontSize: isSmallScreen(context) ? 20 : 22, fontWeight: FontWeight.bold, ), @@ -701,10 +701,11 @@ class DisplayTrainRouteDuration extends StatelessWidget { if (duration.inDays > 0) { firstWritten = true; - if (duration.inDays == 1) + if (duration.inDays == 1) { durationString.write("1 zi"); - else + } else { durationString.write("${duration.inDays} zile"); + } duration -= Duration(days: duration.inDays); } @@ -713,10 +714,11 @@ class DisplayTrainRouteDuration extends StatelessWidget { durationString.write(", "); } firstWritten = true; - if (duration.inHours == 1) + if (duration.inHours == 1) { durationString.write("1 oră"); - else + } else { durationString.write("${duration.inHours} ore"); + } duration -= Duration(hours: duration.inHours); } @@ -725,16 +727,17 @@ class DisplayTrainRouteDuration extends StatelessWidget { durationString.write(", "); } firstWritten = true; - if (duration.inMinutes == 1) + if (duration.inMinutes == 1) { durationString.write("1 minut"); - else + } else { durationString.write("${duration.inMinutes} minute"); + } duration -= Duration(minutes: duration.inMinutes); } return Text( durationString.toString(), - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( fontSize: isSmallScreen(context) ? 18 : 20, ), textAlign: TextAlign.center, @@ -751,7 +754,7 @@ class DisplayTrainRouteDuration extends StatelessWidget { class DisplayTrainYesterdayWarningMaterial extends DisplayTrainYesterdayWarningCommon { - DisplayTrainYesterdayWarningMaterial(void Function() onViewYesterdayTrain) + const DisplayTrainYesterdayWarningMaterial(void Function() onViewYesterdayTrain) : super(onViewYesterdayTrain); @override @@ -764,13 +767,13 @@ class DisplayTrainYesterdayWarningMaterial child: Text.rich( TextSpan( children: [ - TextSpan( + const TextSpan( text: DisplayTrainYesterdayWarningCommon.trainDidNotDepart, ), - TextSpan(text: '\n'), + const TextSpan(text: '\n'), TextSpan( text: DisplayTrainYesterdayWarningCommon.seeYesterdayTrain, - style: TextStyle( + style: const TextStyle( color: Colors.blue, ), recognizer: TapGestureRecognizer() @@ -788,7 +791,7 @@ class DisplayTrainYesterdayWarningMaterial class DisplayTrainStations extends StatelessWidget { final TrainData trainData; - DisplayTrainStations({required this.trainData}); + const DisplayTrainStations({required this.trainData}); @override Widget build(BuildContext context) { @@ -796,6 +799,7 @@ class DisplayTrainStations extends StatelessWidget { delegate: SliverChildBuilderDelegate( (context, index) { return IndexedSemantics( + index: index, child: DisplayTrainStation( station: trainData.stations[index], onTap: () { @@ -805,7 +809,6 @@ class DisplayTrainStations extends StatelessWidget { ); }, ), - index: index, ); }, childCount: trainData.stations.length, diff --git a/lib/pages/train_info_page/view_train/train_info_material_DisplayTrainStation.dart b/lib/pages/train_info_page/view_train/train_info_material_DisplayTrainStation.dart index e427813..4879e06 100644 --- a/lib/pages/train_info_page/view_train/train_info_material_DisplayTrainStation.dart +++ b/lib/pages/train_info_page/view_train/train_info_material_DisplayTrainStation.dart @@ -7,7 +7,7 @@ class DisplayTrainStation extends StatelessWidget { final Station station; final void Function()? onTap; - DisplayTrainStation({required this.station, this.onTap}); + const DisplayTrainStation({required this.station, this.onTap}); @override Widget build(BuildContext context) { @@ -52,7 +52,7 @@ class DisplayTrainStation extends StatelessWidget { final isDelayed = delay > 0 && real == true; final isOnTime = delay <= 0 && real == true; - final isNotScheduled = false; + const isNotScheduled = false; return MaterialBadge( text: station.km.toString(), @@ -96,7 +96,7 @@ class DisplayTrainStation extends StatelessWidget { class Title extends StatelessWidget { final Station station; - Title({ + const Title({ required this.station }); @@ -104,7 +104,7 @@ class Title extends StatelessWidget { Widget build(BuildContext context) { return Text( station.name, - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( fontSize: isSmallScreen(context) ? 18 : 22, fontWeight: MediaQuery.of(context).boldText ? FontWeight.w500 : FontWeight.w300, // fontStyle: items[1] == "ONI" ? FontStyle.italic : FontStyle.normal, @@ -117,7 +117,7 @@ class Title extends StatelessWidget { class Time extends StatelessWidget { final Station station; - Time({ + const Time({ required this.station, }); @@ -144,7 +144,7 @@ class Time extends StatelessWidget { children: [ Text( "→", - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( fontSize: isSmallScreen(context) ? 18 : 22, ), ), @@ -157,7 +157,7 @@ class Time extends StatelessWidget { Container(width: 2,), Text( "→", - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( fontSize: isSmallScreen(context) ? 18 : 22, ), ), @@ -170,7 +170,7 @@ class ArrivalTime extends StatelessWidget { final Station station; final bool finalStation; - ArrivalTime({ + const ArrivalTime({ required this.station, this.finalStation = false, }); @@ -186,12 +186,12 @@ class ArrivalTime extends StatelessWidget { children: [ Text( "→", - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( fontSize: isSmallScreen(context) ? 18 : 22, ), ), Container(width: 2,), - Text("sosire la "), + const Text("sosire la "), ArrivalTime(station: station,), Expanded(child: Container(),), ], @@ -213,13 +213,13 @@ class ArrivalTime extends StatelessWidget { children: [ Text( "${oldDate.hour.toString().padLeft(2, '0')}:${oldDate.minute.toString().padLeft(2, '0')}", - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( decoration: TextDecoration.lineThrough, ), ), Text( "${newDate.hour.toString().padLeft(2, '0')}:${newDate.minute.toString().padLeft(2, '0')}", - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( color: Colors.red.shade300, ), ), @@ -235,13 +235,13 @@ class ArrivalTime extends StatelessWidget { children: [ Text( "${oldDate.hour.toString().padLeft(2, '0')}:${oldDate.minute.toString().padLeft(2, '0')}", - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( decoration: TextDecoration.lineThrough, ), ), Text( "${newDate.hour.toString().padLeft(2, '0')}:${newDate.minute.toString().padLeft(2, '0')}", - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( color: Colors.green.shade300, ), ), @@ -255,7 +255,7 @@ class ArrivalTime extends StatelessWidget { class StopTime extends StatelessWidget { final Station station; - StopTime({ + const StopTime({ required this.station, }); @@ -264,7 +264,7 @@ class StopTime extends StatelessWidget { return Column( mainAxisSize: MainAxisSize.min, children: [ - Text( + const Text( "staționează pentru", textAlign: TextAlign.center, ), @@ -278,7 +278,7 @@ class StopTime extends StatelessWidget { } if (stopsForInt == 1) { return Text( - "1 " + (minutes ? 'minut' : 'secundă'), + "1 ${minutes ? 'minut' : 'secundă'}", textAlign: TextAlign.center, ); } @@ -305,7 +305,7 @@ class DepartureTime extends StatelessWidget { final Station station; final bool firstStation; - DepartureTime({ + const DepartureTime({ required this.station, this.firstStation = false, }); @@ -320,12 +320,12 @@ class DepartureTime extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ Expanded(child: Container(),), - Text("plecare la "), + const Text("plecare la "), DepartureTime(station: station,), Container(width: 2,), Text( "→", - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( fontSize: 22, ), ), @@ -348,13 +348,13 @@ class DepartureTime extends StatelessWidget { children: [ Text( "${oldDate.hour.toString().padLeft(2, '0')}:${oldDate.minute.toString().padLeft(2, '0')}", - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( decoration: TextDecoration.lineThrough, ), ), Text( "${newDate.hour.toString().padLeft(2, '0')}:${newDate.minute.toString().padLeft(2, '0')}", - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( color: Colors.red.shade300, ), ), @@ -370,13 +370,13 @@ class DepartureTime extends StatelessWidget { children: [ Text( "${oldDate.hour.toString().padLeft(2, '0')}:${oldDate.minute.toString().padLeft(2, '0')}", - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( decoration: TextDecoration.lineThrough, ), ), Text( "${newDate.hour.toString().padLeft(2, '0')}:${newDate.minute.toString().padLeft(2, '0')}", - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( color: Colors.green.shade300, ), ), @@ -391,7 +391,7 @@ class DepartureTime extends StatelessWidget { class Delay extends StatelessWidget { final Station station; - Delay({ + const Delay({ required this.station, }); @@ -405,11 +405,12 @@ class Delay extends StatelessWidget { delay = station.departure?.status?.delay; } - if (delay == 0 || delay == null) return Container(); - else if (delay > 0) { + if (delay == 0 || delay == null) { + return Container(); + } else if (delay > 0) { return Text( "$delay ${delay == 1 ? 'minut' : 'minute'} întârziere", - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( color: Colors.red.shade300, fontSize: 14, fontStyle: FontStyle.italic, @@ -419,7 +420,7 @@ class Delay extends StatelessWidget { else if (delay < 0) { return Text( "${-delay} ${delay == -1 ? 'minut' : 'minute'} mai devreme", - style: Theme.of(context).textTheme.bodyText2?.copyWith( + style: Theme.of(context).textTheme.bodyMedium?.copyWith( color: Colors.green.shade300, fontSize: 14, fontStyle: FontStyle.italic, diff --git a/lib/train_info_display.dart b/lib/train_info_display.dart index 25cfb4b..61be741 100644 --- a/lib/train_info_display.dart +++ b/lib/train_info_display.dart @@ -5,7 +5,7 @@ import 'package:info_tren/stations_list.dart.old'; class TrainInfoDisplayData extends StatelessWidget { final TrainData trainData; - TrainInfoDisplayData(this.trainData); + const TrainInfoDisplayData(this.trainData); @override Widget build(BuildContext context) { @@ -57,11 +57,11 @@ class TrainInfoDisplayData extends StatelessWidget { child: StationsList(trainData), ), SafeArea( - child: Container(), bottom: true, left: false, right: false, top: false, + child: Container(), ) ], ), @@ -72,20 +72,20 @@ class TrainInfoDisplayData extends StatelessWidget { class TrainName extends StatelessWidget { final TrainData trainData; - TrainName(this.trainData); + const TrainName(this.trainData); @override Widget build(BuildContext context) { return Text( "${trainData.rank} ${trainData.number}", - style: Theme.of(context).textTheme.headline3, + style: Theme.of(context).textTheme.displaySmall, ); } } class TrainRoute extends StatelessWidget { final TrainData trainData; - TrainRoute(this.trainData); + const TrainRoute(this.trainData); @override Widget build(BuildContext context) { @@ -95,19 +95,19 @@ class TrainRoute extends StatelessWidget { Expanded( child: Text( trainData.route.from, - style: Theme.of(context).textTheme.bodyText1?.copyWith(fontStyle: FontStyle.italic), + style: Theme.of(context).textTheme.bodyLarge?.copyWith(fontStyle: FontStyle.italic), textAlign: TextAlign.left, ), ), Text( "-", - style: Theme.of(context).textTheme.bodyText1?.copyWith(fontStyle: FontStyle.italic), + style: Theme.of(context).textTheme.bodyLarge?.copyWith(fontStyle: FontStyle.italic), textAlign: TextAlign.center, ), Expanded( child: Text( trainData.route.to, - style: Theme.of(context).textTheme.bodyText1?.copyWith(fontStyle: FontStyle.italic), + style: Theme.of(context).textTheme.bodyLarge?.copyWith(fontStyle: FontStyle.italic), textAlign: TextAlign.right, ), ), @@ -118,13 +118,13 @@ class TrainRoute extends StatelessWidget { class TrainOperator extends StatelessWidget { final TrainData trainData; - TrainOperator(this.trainData); + const TrainOperator(this.trainData); @override Widget build(BuildContext context) { return Text( "Operat de ${trainData.operator}", - style: Theme.of(context).textTheme.bodyText2, + style: Theme.of(context).textTheme.bodyMedium, textAlign: TextAlign.center, ); } @@ -132,21 +132,21 @@ class TrainOperator extends StatelessWidget { class TrainStatus extends StatelessWidget { final TrainData trainData; - TrainStatus(this.trainData); + const TrainStatus(this.trainData); @override Widget build(BuildContext context) { return Text( trainData.status.toString(), textAlign: TextAlign.center, - style: Theme.of(context).textTheme.headline5, + style: Theme.of(context).textTheme.headlineSmall, ); } } class Destination extends StatelessWidget { final TrainData trainData; - Destination(this.trainData); + const Destination(this.trainData); @override Widget build(BuildContext context) { @@ -169,7 +169,7 @@ class Destination extends StatelessWidget { class LastUpdate extends StatelessWidget { final TrainData trainData; - LastUpdate(this.trainData); + const LastUpdate(this.trainData); @override Widget build(BuildContext context) { @@ -181,7 +181,7 @@ class LastUpdate extends StatelessWidget { children: [ Padding( padding: const EdgeInsets.all(2.0), - child: Text("Ultima informație", style: Theme.of(context).textTheme.headline5,), + child: Text("Ultima informație", style: Theme.of(context).textTheme.headlineSmall,), ), Row( children: [ @@ -199,10 +199,10 @@ class LastUpdate extends StatelessWidget { Padding( padding: const EdgeInsets.all(2.0), child: trainData.status!.delay == 0 - ? Text("Fără întârziere", style: Theme.of(context).textTheme.caption,) + ? Text("Fără întârziere", style: Theme.of(context).textTheme.bodySmall,) : trainData.status!.delay > 0 - ? Text("${trainData.status!.delay} minute întârziere", style: Theme.of(context).textTheme.bodyText2?.copyWith(color: Colors.red.shade700),) - : Text("${-(trainData.status!.delay)} minute mai devreme", style: Theme.of(context).textTheme.bodyText2?.copyWith(color: Colors.green.shade700),) + ? Text("${trainData.status!.delay} minute întârziere", style: Theme.of(context).textTheme.bodyMedium?.copyWith(color: Colors.red.shade700),) + : Text("${-(trainData.status!.delay)} minute mai devreme", style: Theme.of(context).textTheme.bodyMedium?.copyWith(color: Colors.green.shade700),) ), // TODO: Implement status report time detection // Padding( @@ -247,7 +247,7 @@ class LastUpdate extends StatelessWidget { class TotalDetails extends StatelessWidget { final TrainData trainData; - TotalDetails(this.trainData); + const TotalDetails(this.trainData); @override Widget build(BuildContext context) { @@ -255,7 +255,7 @@ class TotalDetails extends StatelessWidget { children: [ Text( '${trainData.stations.last.km} km', - style: Theme.of(context).textTheme.caption, + style: Theme.of(context).textTheme.bodySmall, textAlign: TextAlign.left, ), Expanded( @@ -278,7 +278,7 @@ class CustomDivider extends StatelessWidget { mainAxisSize: MainAxisSize.min, children: [ Container(height: 4,), - Divider(), + const Divider(), Container(height: 4,), ], ); diff --git a/lib/utils/string.dart b/lib/utils/string.dart index 73f312d..be2192d 100644 --- a/lib/utils/string.dart +++ b/lib/utils/string.dart @@ -2,9 +2,12 @@ extension TakeWhile on String { String takeWhile(Function charValidator) { StringBuffer output = StringBuffer(); - for (final char in this.codeUnits) { - if (charValidator(char)) output.writeCharCode(char); - else break; + for (final char in codeUnits) { + if (charValidator(char)) { + output.writeCharCode(char); + } else { + break; + } } return output.toString();