1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2024-11-22 12:59:21 +00:00

Improve update message dialog

This commit is contained in:
Pierre HUBERT 2021-03-12 16:37:21 +01:00
parent f70717a987
commit ec4ca238de
2 changed files with 78 additions and 34 deletions

View File

@ -2,6 +2,7 @@ import 'dart:async';
import 'package:comunic/helpers/conversations_helper.dart';
import 'package:comunic/helpers/events_helper.dart';
import 'package:comunic/helpers/server_config_helper.dart';
import 'package:comunic/helpers/users_helper.dart';
import 'package:comunic/lists/conversation_messages_list.dart';
import 'package:comunic/lists/users_list.dart';
@ -440,7 +441,12 @@ class _ConversationScreenState extends SafeState<ConversationScreen> {
title: tr("Update message"),
message: tr("Please enter new message content:"),
defaultValue: message.message.content,
hint: tr("New message"));
hint: tr("New message"),
minLength:
ServerConfigurationHelper.config.conversationsPolicy.minMessageLen,
maxLength:
ServerConfigurationHelper.config.conversationsPolicy.maxMessageLen,
);
if (newContent == null) return;

View File

@ -93,6 +93,7 @@ Future<String> askUserString({
@required String defaultValue,
@required String hint,
int maxLength = 200,
int minLength = 1,
}) async {
assert(context != null);
assert(title != null);
@ -105,19 +106,58 @@ Future<String> askUserString({
final confirm = await showDialog<bool>(
context: context,
builder: (c) => AlertDialog(
title: Text(title),
builder: (c) => _InputTextDialog(
title: title,
message: message,
controller: controller,
maxLength: maxLength,
minLength: minLength,
hint: hint,
));
if (confirm == null || !confirm) return null;
return controller.text;
}
class _InputTextDialog extends StatefulWidget {
final String title;
final String message;
final TextEditingController controller;
final int maxLength;
final int minLength;
final String hint;
const _InputTextDialog({
Key key,
@required this.title,
@required this.message,
@required this.controller,
@required this.maxLength,
@required this.minLength,
@required this.hint,
}) : super(key: key);
@override
__InputTextDialogState createState() => __InputTextDialogState();
}
class __InputTextDialogState extends State<_InputTextDialog> {
@override
Widget build(BuildContext c) => AlertDialog(
title: Text(widget.title),
content: AutoSizeDialogContentWidget(
child: Column(
children: <Widget>[
Text(message),
Text(widget.message),
TextField(
controller: controller,
controller: widget.controller,
maxLines: null,
maxLength: maxLength,
maxLength: widget.maxLength,
keyboardType: TextInputType.text,
onChanged: (s) => setState(() {}),
decoration: InputDecoration(
labelText: hint,
labelText: widget.hint,
alignLabelWithHint: true,
),
)
@ -131,14 +171,12 @@ Future<String> askUserString({
),
FlatButton(
child: Text(tr("OK")),
onPressed: () => Navigator.pop(c, true),
onPressed: widget.controller.text.length >= widget.minLength
? () => Navigator.pop(c, true)
: null,
),
],
));
if (confirm == null || !confirm) return null;
return controller.text;
);
}
/// Show an alert dialog to get user confirmation for something