diff --git a/lib/presentation/widgets/player_selection.dart b/lib/presentation/widgets/player_selection.dart index 587c8af..58b62ec 100644 --- a/lib/presentation/widgets/player_selection.dart +++ b/lib/presentation/widgets/player_selection.dart @@ -84,6 +84,7 @@ class _PlayerSelectionState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ CustomSearchBar( + maxLength: Constants.MAX_PLAYER_NAME_LENGTH, controller: _searchBarController, constraints: const BoxConstraints(maxHeight: 45, minHeight: 45), hintText: loc.search_for_players, diff --git a/lib/presentation/widgets/text_input/custom_search_bar.dart b/lib/presentation/widgets/text_input/custom_search_bar.dart index 76bb6e5..eefe6d7 100644 --- a/lib/presentation/widgets/text_input/custom_search_bar.dart +++ b/lib/presentation/widgets/text_input/custom_search_bar.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:game_tracker/core/constants.dart'; import 'package:game_tracker/core/custom_theme.dart'; class CustomSearchBar extends StatelessWidget { @@ -22,6 +21,7 @@ class CustomSearchBar extends StatelessWidget { this.onTrailingButtonPressed, this.onChanged, this.constraints, + this.maxLength, }); /// The controller for the search bar's text input. @@ -48,15 +48,19 @@ class CustomSearchBar extends StatelessWidget { /// The constraints for the search bar. final BoxConstraints? constraints; + /// Optional parameter for maximum length of the input text. + final int? maxLength; + @override Widget build(BuildContext context) { /// Enforce maximum length on the input text - const maxLength = Constants.MAX_PLAYER_NAME_LENGTH; - if (controller.text.length > maxLength) { - controller.text = controller.text.substring(0, maxLength); - controller.selection = TextSelection.fromPosition( - TextPosition(offset: controller.text.length), - ); + if (maxLength != null) { + if (controller.text.length > maxLength!) { + controller.text = controller.text.substring(0, maxLength); + controller.selection = TextSelection.fromPosition( + TextPosition(offset: controller.text.length), + ); + } } return SearchBar( diff --git a/lib/presentation/widgets/text_input/text_input_field.dart b/lib/presentation/widgets/text_input/text_input_field.dart index 0b949ba..7efcfa0 100644 --- a/lib/presentation/widgets/text_input/text_input_field.dart +++ b/lib/presentation/widgets/text_input/text_input_field.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:game_tracker/core/custom_theme.dart'; class TextInputField extends StatelessWidget { @@ -48,6 +49,7 @@ class TextInputField extends StatelessWidget { controller: controller, onChanged: onChanged, maxLength: maxLength, + maxLengthEnforcement: MaxLengthEnforcement.truncateAfterCompositionEnds, maxLines: maxLines, minLines: minLines, decoration: InputDecoration(