diff --git a/lib/logic/cubit/edit_book_cubit.dart b/lib/logic/cubit/edit_book_cubit.dart index 4f294e58..03a7836e 100644 --- a/lib/logic/cubit/edit_book_cubit.dart +++ b/lib/logic/cubit/edit_book_cubit.dart @@ -81,7 +81,7 @@ class EditBookCubit extends Cubit { void setPublicationYear(String publicationYear) { final book = state.copyWith(); book.publicationYear = - publicationYear.isEmpty ? null : int.parse(publicationYear); + publicationYear.isEmpty ? null : int.tryParse(publicationYear); emit(book); } diff --git a/lib/ui/add_book_screen/add_book_screen.dart b/lib/ui/add_book_screen/add_book_screen.dart index ce72fa2d..e4acddcc 100644 --- a/lib/ui/add_book_screen/add_book_screen.dart +++ b/lib/ui/add_book_screen/add_book_screen.dart @@ -556,9 +556,12 @@ class _AddBookScreenState extends State { icon: FontAwesomeIcons.solidCalendar, keyboardType: TextInputType.number, inputFormatters: [ - FilteringTextInputFormatter.digitsOnly + // allow optional leading '-' for BCE years + FilteringTextInputFormatter.allow( + RegExp(r'^-?\d{0,4}')), ], - maxLength: 4, + // allow space for a leading '-' (e.g. -500) + maxLength: 5, padding: const EdgeInsets.fromLTRB(5, 0, 10, 0), ), ),