1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2024-10-23 06:53:23 +00:00

Improve send message form

This commit is contained in:
Pierre HUBERT 2021-03-12 22:40:33 +01:00
parent e638398b2e
commit e35a0d2fd4

View File

@ -33,34 +33,6 @@ import 'package:mime/mime.dart';
enum ErrorLevel { NONE, MINOR, MAJOR }
enum _OlderMessagesLevel { NONE, LOADING, NO_MORE_AVAILABLE }
Color get _senderColor =>
darkTheme() ? Color(0xff2b343b) : Colors.green.shade900;
Color get _receiverColor =>
darkTheme() ? Color(0xff1e2225) : Colors.grey.shade600;
const _greyColor = Color(0xff8f8f8f);
Color get _gradientColorStart => darkTheme() ? Color(0xff00b6f3) : Colors.green;
Color get _gradientColorEnd =>
darkTheme() ? Color(0xff0184dc) : Colors.greenAccent;
Color get _separatorColor =>
darkTheme() ? Color(0xff272c35) : Color(0xffBEBEBE);
LinearGradient get _fabGradient => LinearGradient(
colors: [_gradientColorStart, _gradientColorEnd],
begin: Alignment.topLeft,
end: Alignment.bottomRight,
);
LinearGradient get _disabledGradient => LinearGradient(
colors: [_greyColor, _receiverColor],
begin: Alignment.topLeft,
end: Alignment.bottomRight,
);
class ConversationScreen extends StatefulWidget {
final int conversationID;
@ -109,6 +81,33 @@ class _ConversationScreenState extends SafeState<ConversationScreen> {
showEmojiContainer() => setState(() => _showEmojiPicker = true);
// Colors definition
Color get _receiverColor =>
darkTheme() ? Color(0xff3a3d40) : Colors.grey.shade600;
Color get _greyColor => Color(0xff8f8f8f);
Color get _gradientColorStart =>
darkTheme() ? Color(0xff00b6f3) : Colors.green;
Color get _gradientColorEnd =>
darkTheme() ? Color(0xff0184dc) : Colors.greenAccent;
Color get _separatorColor =>
darkTheme() ? Color(0xff272c35) : Color(0xffBEBEBE);
LinearGradient get _fabGradient => LinearGradient(
colors: [_gradientColorStart, _gradientColorEnd],
begin: Alignment.topLeft,
end: Alignment.bottomRight,
);
LinearGradient get _disabledGradient => LinearGradient(
colors: [_greyColor, _receiverColor],
begin: Alignment.topLeft,
end: Alignment.bottomRight,
);
@override
void initState() {
super.initState();
@ -402,13 +401,13 @@ class _ConversationScreenState extends SafeState<ConversationScreen> {
/// Send new message form
Widget _buildSendMessageForm() => Container(
padding: EdgeInsets.all(10),
padding: EdgeInsets.fromLTRB(10, 5, 10, 5),
child: Row(
children: <Widget>[
GestureDetector(
onTap: !_isSendingMessage ? _sendFileMessage : null,
child: Container(
padding: EdgeInsets.all(10),
padding: EdgeInsets.all(6),
decoration: BoxDecoration(
gradient:
_isSendingMessage ? _disabledGradient : _fabGradient,
@ -448,7 +447,7 @@ class _ConversationScreenState extends SafeState<ConversationScreen> {
const Radius.circular(50.0),
),
borderSide: BorderSide.none),
contentPadding: EdgeInsets.fromLTRB(20, 10, 32, 10),
contentPadding: EdgeInsets.fromLTRB(20, 8, 32, 8),
filled: true,
fillColor: _separatorColor,
),
@ -476,20 +475,21 @@ class _ConversationScreenState extends SafeState<ConversationScreen> {
],
),
),
Container(
margin: EdgeInsets.only(left: 10),
SizedBox(width: 5),
GestureDetector(
onTap: _isMessageValid ? _submitTextMessage : null,
child: Container(
padding: EdgeInsets.all(8),
decoration: BoxDecoration(
gradient: _isWriting ? _fabGradient : _disabledGradient,
gradient: !_isMessageValid ? _disabledGradient : _fabGradient,
shape: BoxShape.circle,
),
child: IconButton(
icon: Icon(
Icons.send,
size: 15,
color: darkTheme() ? Colors.black : Colors.white,
),
onPressed: _isWriting ? _submitTextMessage : null,
))
child: Icon(
Icons.send,
color: darkTheme() ? Colors.black : Colors.white,
),
),
),
],
),
);
@ -523,7 +523,6 @@ class _ConversationScreenState extends SafeState<ConversationScreen> {
: null,
),
_messages.length == 0 ? _buildNoMessagesNotice() : _buildMessagesList(),
Divider(),
_buildSendMessageForm(),
_showEmojiPicker ? _buildEmojiContainer() : Container(),
],