Initial commit

This commit is contained in:
Kazimierz Ciołek
2026-02-19 02:49:29 +01:00
commit 782986a632
148 changed files with 29230 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
import 'package:flutter/material.dart';
import 'package:trainhub_flutter/core/theme/app_colors.dart';
extension BuildContextExtensions on BuildContext {
ThemeData get theme => Theme.of(this);
ColorScheme get colors => theme.colorScheme;
TextTheme get textTheme => theme.textTheme;
MediaQueryData get mediaQuery => MediaQuery.of(this);
double get screenWidth => mediaQuery.size.width;
double get screenHeight => mediaQuery.size.height;
void showSnackBar(String message, {bool isError = false}) {
ScaffoldMessenger.of(this).showSnackBar(
SnackBar(
content: Text(message),
backgroundColor:
isError ? AppColors.destructive : AppColors.surfaceContainer,
),
);
}
void showSuccessSnackBar(String message) {
ScaffoldMessenger.of(this).showSnackBar(
SnackBar(
content: Row(
children: [
const Icon(Icons.check_circle, color: AppColors.success, size: 18),
const SizedBox(width: 8),
Expanded(child: Text(message)),
],
),
),
);
}
}

View File

@@ -0,0 +1,7 @@
extension DateTimeExtensions on DateTime {
String toDisplayDate() {
return '${year.toString()}-${month.toString().padLeft(2, '0')}-${day.toString().padLeft(2, '0')}';
}
String toIso() => toIso8601String();
}

View File

@@ -0,0 +1,15 @@
extension DurationExtensions on Duration {
String toMmSs() {
final int minutes = inMinutes.remainder(60);
final int seconds = inSeconds.remainder(60);
return '${minutes.toString().padLeft(2, '0')}:${seconds.toString().padLeft(2, '0')}';
}
}
extension IntTimeExtensions on int {
String toMmSs() {
final int minutes = this ~/ 60;
final int seconds = this % 60;
return '$minutes:${seconds.toString().padLeft(2, '0')}';
}
}