feat: add utility functions for date and quantity formatting; refactor inventory and recipe screens to use new formatters
Test Suite / test (24.15.0) (push) Has been cancelled

This commit is contained in:
Nils-Johan Gynther
2026-05-04 20:50:18 +02:00
parent a645d6a364
commit 5411dfe2c0
9 changed files with 40 additions and 41 deletions
@@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import '../../../core/api/api_error_mapper.dart';
import '../../../core/utils/formatters.dart';
import '../../../core/api/api_paths.dart';
import '../../../core/api/api_providers.dart';
import '../../../core/forms/form_options.dart';
@@ -142,10 +143,7 @@ class _CreateInventoryScreenState
}
}
String _formatDate(DateTime? dt) {
if (dt == null) return context.l10n.selectDateLabel;
return '${dt.year}-${dt.month.toString().padLeft(2, '0')}-${dt.day.toString().padLeft(2, '0')}';
}
String _formatDate(DateTime? dt) => formatDate(dt, fallback: context.l10n.selectDateLabel);
@override
Widget build(BuildContext context) {
@@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import '../../../core/api/api_error_mapper.dart';
import '../../../core/utils/formatters.dart';
import '../../../core/l10n/l10n.dart';
import '../../../core/ui/async_state_views.dart';
import '../../auth/data/auth_providers.dart';
@@ -77,14 +78,7 @@ class InventoryDetailScreen extends ConsumerWidget {
);
}
String _formatDate(String iso) {
try {
final dt = DateTime.parse(iso);
return '${dt.year}-${dt.month.toString().padLeft(2, '0')}-${dt.day.toString().padLeft(2, '0')}';
} catch (_) {
return iso;
}
}
String _formatDate(String iso) => formatDateString(iso);
}
class _DeleteButton extends ConsumerWidget {
@@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import '../../../core/api/api_error_mapper.dart';
import '../../../core/utils/formatters.dart';
import '../../../core/forms/form_options.dart';
import '../../../core/l10n/l10n.dart';
import '../../../core/ui/async_state_views.dart';
@@ -117,10 +118,7 @@ class _InventoryEditScreenState extends ConsumerState<InventoryEditScreen> {
}
}
String _formatDate(DateTime? dt) {
if (dt == null) return context.l10n.selectDateLabel;
return '${dt.year}-${dt.month.toString().padLeft(2, '0')}-${dt.day.toString().padLeft(2, '0')}';
}
String _formatDate(DateTime? dt) => formatDate(dt, fallback: context.l10n.selectDateLabel);
@override
Widget build(BuildContext context) {
@@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import '../../../core/api/api_error_mapper.dart';
import '../../../core/utils/formatters.dart';
import '../../auth/data/auth_providers.dart';
import '../data/inventory_providers.dart';
import '../domain/inventory_item.dart';
@@ -287,17 +288,9 @@ class _ForegroundTile extends ConsumerWidget {
);
}
String _fmtQty(double v) =>
v == v.roundToDouble() ? v.toStringAsFixed(0) : v.toStringAsFixed(1);
String _fmtQty(double v) => formatQuantity(v);
String _formatDate(String iso) {
try {
final dt = DateTime.parse(iso);
return '${dt.year}-${dt.month.toString().padLeft(2, '0')}-'
'${dt.day.toString().padLeft(2, '0')}';
} catch (_) {
return iso;
}
String _formatDate(String iso) => formatDateString(iso);
}
}