diff --git a/lib/ui/screens/conversation_screen.dart b/lib/ui/screens/conversation_screen.dart index 4580049..069a6a6 100644 --- a/lib/ui/screens/conversation_screen.dart +++ b/lib/ui/screens/conversation_screen.dart @@ -325,15 +325,8 @@ class _ConversationScreenState extends State { maxLengthEnforced: true, // Show max length only when there is some text already typed - buildCounter: ( - BuildContext context, { - @required int currentLength, - @required int maxLength, - @required bool isFocused, - }) => - currentLength > 0 - ? Text("$currentLength/$maxLength") - : Container(), + buildCounter: smartInputCounterWidgetBuilder, + enabled: !_isSendingMessage, controller: _textEditingController, onChanged: _updatedText, diff --git a/lib/ui/tiles/post_tile.dart b/lib/ui/tiles/post_tile.dart index ed07df0..2d8c7c8 100644 --- a/lib/ui/tiles/post_tile.dart +++ b/lib/ui/tiles/post_tile.dart @@ -250,27 +250,33 @@ class _PostTileState extends State { // Comment input Expanded( child: TextField( + // Comment max size + maxLength: 255, + maxLines: null, + buildCounter: smartInputCounterWidgetBuilder, + controller: _commentController, onChanged: (s) => setState(() {}), onSubmitted: _canSubmitComment ? (s) => _submitComment() : null, decoration: InputDecoration( - hintText: tr("New comment..."), - hintStyle: TextStyle(color: Colors.grey, fontSize: 12), - fillColor: Colors.white, - filled: true, - border: OutlineInputBorder( - borderSide: BorderSide(width: 0.5, color: Colors.grey), - borderRadius: BorderRadius.only( - topLeft: Radius.circular(3), - bottomLeft: Radius.circular(3), - ), - gapPadding: 1), - contentPadding: EdgeInsets.only( - left: 10, - right: 10, - bottom: 5, - top: 5, - )), + hintText: tr("New comment..."), + hintStyle: TextStyle(color: Colors.grey, fontSize: 12), + fillColor: Colors.white, + filled: true, + border: OutlineInputBorder( + borderSide: BorderSide(width: 0.5, color: Colors.grey), + borderRadius: BorderRadius.only( + topLeft: Radius.circular(3), + bottomLeft: Radius.circular(3), + ), + gapPadding: 1), + contentPadding: EdgeInsets.only( + left: 10, + right: 10, + bottom: 5, + top: 5, + ), + ), ), ), diff --git a/lib/utils/ui_utils.dart b/lib/utils/ui_utils.dart index 4a808f6..b30e3fa 100644 --- a/lib/utils/ui_utils.dart +++ b/lib/utils/ui_utils.dart @@ -153,3 +153,13 @@ Future showConfirmDialog({ return result != null && result; } + +/// Smart [InputCounterWidgetBuilder] that show text limit only when some +/// text has already been entered by the user +Widget smartInputCounterWidgetBuilder( + BuildContext context, { + @required int currentLength, + @required int maxLength, + @required bool isFocused, +}) => + currentLength > 0 ? Text("$currentLength/$maxLength") : Container();