Skip to content

Commit 802a41f

Browse files
committed
Code refactor
1 parent 145fef6 commit 802a41f

21 files changed

+139
-157
lines changed

CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 1.6.5
2+
3+
- **BREAKING CHANGE**: `PreviewTapOptions` -> `TextMessageOptions`
4+
15
## 1.6.4
26

37
- **BREAKING CHANGE**: Add `InputOptions`. `onTextChanged`, `onTextFieldTap` and `sendButtonVisibilityMode` are now under `InputOptions` class, just move the same values to `inputOptions: InputOptions()`.

lib/flutter_chat_ui.dart

+11-11
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,20 @@ export 'src/chat_theme.dart';
55
export 'src/models/bubble_rtl_alignment.dart';
66
export 'src/models/emoji_enlargement_behavior.dart';
77
export 'src/models/input_clear_mode.dart';
8-
export 'src/models/preview_tap_options.dart';
98
export 'src/models/send_button_visibility_mode.dart';
109
export 'src/util.dart' show formatBytes, isConsistsOfEmojis;
11-
export 'src/widgets/attachment_button.dart';
1210
export 'src/widgets/chat.dart';
1311
export 'src/widgets/chat_list.dart';
14-
export 'src/widgets/file_message.dart';
1512
export 'src/widgets/image_gallery.dart';
16-
export 'src/widgets/image_message.dart';
17-
export 'src/widgets/input.dart';
18-
export 'src/widgets/input_text_field_controller.dart';
19-
export 'src/widgets/message.dart';
20-
export 'src/widgets/send_button.dart';
21-
export 'src/widgets/text_message.dart';
13+
export 'src/widgets/input/attachment_button.dart';
14+
export 'src/widgets/input/input.dart';
15+
export 'src/widgets/input/input_text_field_controller.dart';
16+
export 'src/widgets/input/send_button.dart';
17+
export 'src/widgets/message/file_message.dart';
18+
export 'src/widgets/message/image_message.dart';
19+
export 'src/widgets/message/message.dart';
20+
export 'src/widgets/message/message_status.dart';
21+
export 'src/widgets/message/text_message.dart';
22+
export 'src/widgets/message/user_avatar.dart';
23+
export 'src/widgets/message/user_name.dart';
2224
export 'src/widgets/unread_header.dart';
23-
export 'src/widgets/user_avatar.dart';
24-
export 'src/widgets/user_name.dart';
File renamed without changes.

lib/src/models/preview_tap_options.dart

-18
This file was deleted.

lib/src/widgets/chat.dart

+6-12
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,16 @@ import '../models/date_header.dart';
1313
import '../models/emoji_enlargement_behavior.dart';
1414
import '../models/message_spacer.dart';
1515
import '../models/preview_image.dart';
16-
import '../models/preview_tap_options.dart';
1716
import '../models/unread_header_data.dart';
1817
import '../util.dart';
1918
import 'chat_list.dart';
2019
import 'image_gallery.dart';
21-
import 'inherited_chat_theme.dart';
22-
import 'inherited_l10n.dart';
23-
import 'inherited_user.dart';
24-
import 'input.dart';
25-
import 'message.dart';
26-
import 'text_message.dart';
20+
import 'input/input.dart';
21+
import 'message/message.dart';
22+
import 'message/text_message.dart';
23+
import 'state/inherited_chat_theme.dart';
24+
import 'state/inherited_l10n.dart';
25+
import 'state/inherited_user.dart';
2726
import 'unread_header.dart';
2827

2928
/// Entry widget, represents the complete chat. If you wrap it in [SafeArea] and
@@ -75,7 +74,6 @@ class Chat extends StatefulWidget {
7574
this.onMessageVisibilityChanged,
7675
this.onPreviewDataFetched,
7776
required this.onSendPressed,
78-
this.previewTapOptions = const PreviewTapOptions(),
7977
this.scrollController,
8078
this.scrollPhysics,
8179
this.scrollToUnreadOptions = const ScrollToUnreadOptions(),
@@ -242,9 +240,6 @@ class Chat extends StatefulWidget {
242240
/// See [Input.onSendPressed].
243241
final void Function(types.PartialText) onSendPressed;
244242

245-
/// See [Message.previewTapOptions].
246-
final PreviewTapOptions previewTapOptions;
247-
248243
/// See [ChatList.scrollController].
249244
/// If provided, you cannot use the scroll to message functionality.
250245
final AutoScrollController? scrollController;
@@ -540,7 +535,6 @@ class ChatState extends State<Chat> {
540535
},
541536
onMessageVisibilityChanged: widget.onMessageVisibilityChanged,
542537
onPreviewDataFetched: _onPreviewDataFetched,
543-
previewTapOptions: widget.previewTapOptions,
544538
roundBorder: map['nextMessageInGroup'] == true,
545539
showAvatar: map['nextMessageInGroup'] == false,
546540
showName: map['showName'] == true,

lib/src/widgets/chat_list.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import 'package:flutter/foundation.dart' show kIsWeb;
33
import 'package:flutter/material.dart';
44
import 'package:flutter_chat_types/flutter_chat_types.dart' as types;
55

6-
import 'inherited_chat_theme.dart';
7-
import 'inherited_user.dart';
86
import 'patched_sliver_animated_list.dart';
7+
import 'state/inherited_chat_theme.dart';
8+
import 'state/inherited_user.dart';
99

1010
/// Animated list that handles automatic animations and pagination.
1111
class ChatList extends StatefulWidget {

lib/src/widgets/attachment_button.dart lib/src/widgets/input/attachment_button.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'package:flutter/material.dart';
22

3-
import 'inherited_chat_theme.dart';
4-
import 'inherited_l10n.dart';
3+
import '../state/inherited_chat_theme.dart';
4+
import '../state/inherited_l10n.dart';
55

66
/// A class that represents attachment button widget.
77
class AttachmentButton extends StatelessWidget {

lib/src/widgets/input.dart lib/src/widgets/input/input.dart

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ import 'package:flutter/material.dart';
33
import 'package:flutter/services.dart';
44
import 'package:flutter_chat_types/flutter_chat_types.dart' as types;
55

6-
import '../models/input_clear_mode.dart';
7-
import '../models/send_button_visibility_mode.dart';
6+
import '../../models/input_clear_mode.dart';
7+
import '../../models/send_button_visibility_mode.dart';
8+
import '../state/inherited_chat_theme.dart';
9+
import '../state/inherited_l10n.dart';
810
import 'attachment_button.dart';
9-
import 'inherited_chat_theme.dart';
10-
import 'inherited_l10n.dart';
1111
import 'input_text_field_controller.dart';
1212
import 'send_button.dart';
1313

lib/src/widgets/input_text_field_controller.dart lib/src/widgets/input/input_text_field_controller.dart

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import 'package:flutter/material.dart';
22

3-
import 'pattern_style.dart';
3+
import '../../models/pattern_style.dart';
44

55
/// Controller for the [TextField] on [Input] widget
66
/// To highlighting the matches for pattern

lib/src/widgets/send_button.dart lib/src/widgets/input/send_button.dart

+3-8
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'package:flutter/material.dart';
22

3-
import 'inherited_chat_theme.dart';
4-
import 'inherited_l10n.dart';
3+
import '../state/inherited_chat_theme.dart';
4+
import '../state/inherited_l10n.dart';
55

66
/// A class that represents send button widget.
77
class SendButton extends StatelessWidget {
@@ -21,12 +21,7 @@ class SendButton extends StatelessWidget {
2121
@override
2222
Widget build(BuildContext context) => Container(
2323
margin: InheritedChatTheme.of(context).theme.sendButtonMargin ??
24-
const EdgeInsetsDirectional.fromSTEB(
25-
0,
26-
0,
27-
8,
28-
0,
29-
),
24+
const EdgeInsetsDirectional.fromSTEB(0, 0, 8, 0),
3025
child: IconButton(
3126
constraints: const BoxConstraints(
3227
minHeight: 24,

lib/src/widgets/file_message.dart lib/src/widgets/message/file_message.dart

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter_chat_types/flutter_chat_types.dart' as types;
33

4-
import '../util.dart';
5-
import 'inherited_chat_theme.dart';
6-
import 'inherited_l10n.dart';
7-
import 'inherited_user.dart';
4+
import '../../util.dart';
5+
import '../state/inherited_chat_theme.dart';
6+
import '../state/inherited_l10n.dart';
7+
import '../state/inherited_user.dart';
88

99
/// A class that represents file message widget.
1010
class FileMessage extends StatelessWidget {

lib/src/widgets/image_message.dart lib/src/widgets/message/image_message.dart

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter_chat_types/flutter_chat_types.dart' as types;
33

4-
import '../conditional/conditional.dart';
5-
import '../util.dart';
6-
import 'inherited_chat_theme.dart';
7-
import 'inherited_user.dart';
4+
import '../../conditional/conditional.dart';
5+
import '../../util.dart';
6+
import '../state/inherited_chat_theme.dart';
7+
import '../state/inherited_user.dart';
88

99
/// A class that represents image message widget. Supports different
1010
/// aspect ratios, renders blurred image as a background which is visible

lib/src/widgets/message.dart lib/src/widgets/message/message.dart

+9-70
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ import 'package:flutter/material.dart';
33
import 'package:flutter_chat_types/flutter_chat_types.dart' as types;
44
import 'package:visibility_detector/visibility_detector.dart';
55

6-
import '../models/bubble_rtl_alignment.dart';
7-
import '../models/emoji_enlargement_behavior.dart';
8-
import '../models/preview_tap_options.dart';
9-
import '../util.dart';
6+
import '../../models/bubble_rtl_alignment.dart';
7+
import '../../models/emoji_enlargement_behavior.dart';
8+
import '../../util.dart';
9+
import '../state/inherited_chat_theme.dart';
10+
import '../state/inherited_user.dart';
1011
import 'file_message.dart';
1112
import 'image_message.dart';
12-
import 'inherited_chat_theme.dart';
13-
import 'inherited_user.dart';
13+
import 'message_status.dart';
1414
import 'text_message.dart';
1515
import 'user_avatar.dart';
1616

@@ -42,7 +42,6 @@ class Message extends StatelessWidget {
4242
this.onMessageTap,
4343
this.onMessageVisibilityChanged,
4444
this.onPreviewDataFetched,
45-
required this.previewTapOptions,
4645
required this.roundBorder,
4746
required this.showAvatar,
4847
required this.showName,
@@ -135,9 +134,6 @@ class Message extends StatelessWidget {
135134
final void Function(types.TextMessage, types.PreviewData)?
136135
onPreviewDataFetched;
137136

138-
/// See [TextMessage.previewTapOptions].
139-
final PreviewTapOptions previewTapOptions;
140-
141137
/// Rounds border of the message to visually group messages together.
142138
final bool roundBorder;
143139

@@ -186,11 +182,7 @@ class Message extends StatelessWidget {
186182
final borderRadius = bubbleRtlAlignment == BubbleRtlAlignment.left
187183
? BorderRadiusDirectional.only(
188184
bottomEnd: Radius.circular(
189-
currentUserIsAuthor
190-
? roundBorder
191-
? messageBorderRadius
192-
: 0
193-
: messageBorderRadius,
185+
!currentUserIsAuthor || roundBorder ? messageBorderRadius : 0,
194186
),
195187
bottomStart: Radius.circular(
196188
currentUserIsAuthor || roundBorder ? messageBorderRadius : 0,
@@ -203,11 +195,7 @@ class Message extends StatelessWidget {
203195
currentUserIsAuthor || roundBorder ? messageBorderRadius : 0,
204196
),
205197
bottomRight: Radius.circular(
206-
currentUserIsAuthor
207-
? roundBorder
208-
? messageBorderRadius
209-
: 0
210-
: messageBorderRadius,
198+
!currentUserIsAuthor || roundBorder ? messageBorderRadius : 0,
211199
),
212200
topLeft: Radius.circular(messageBorderRadius),
213201
topRight: Radius.circular(messageBorderRadius),
@@ -286,7 +274,7 @@ class Message extends StatelessWidget {
286274
onTap: () => onMessageStatusTap?.call(context, message),
287275
child: customStatusBuilder != null
288276
? customStatusBuilder!(message, context: context)
289-
: _statusBuilder(context),
277+
: MessageStatus(status: message.status),
290278
)
291279
: null,
292280
),
@@ -365,7 +353,6 @@ class Message extends StatelessWidget {
365353
nameBuilder: nameBuilder,
366354
onPreviewDataFetched: onPreviewDataFetched,
367355
options: textMessageOptions,
368-
previewTapOptions: previewTapOptions,
369356
showName: showName,
370357
usePreviewData: usePreviewData,
371358
userAgent: userAgent,
@@ -374,52 +361,4 @@ class Message extends StatelessWidget {
374361
return const SizedBox();
375362
}
376363
}
377-
378-
Widget _statusBuilder(BuildContext context) {
379-
switch (message.status) {
380-
case types.Status.delivered:
381-
case types.Status.sent:
382-
return InheritedChatTheme.of(context).theme.deliveredIcon != null
383-
? InheritedChatTheme.of(context).theme.deliveredIcon!
384-
: Image.asset(
385-
'assets/icon-delivered.png',
386-
color: InheritedChatTheme.of(context).theme.primaryColor,
387-
package: 'flutter_chat_ui',
388-
);
389-
case types.Status.error:
390-
return InheritedChatTheme.of(context).theme.errorIcon != null
391-
? InheritedChatTheme.of(context).theme.errorIcon!
392-
: Image.asset(
393-
'assets/icon-error.png',
394-
color: InheritedChatTheme.of(context).theme.errorColor,
395-
package: 'flutter_chat_ui',
396-
);
397-
case types.Status.seen:
398-
return InheritedChatTheme.of(context).theme.seenIcon != null
399-
? InheritedChatTheme.of(context).theme.seenIcon!
400-
: Image.asset(
401-
'assets/icon-seen.png',
402-
color: InheritedChatTheme.of(context).theme.primaryColor,
403-
package: 'flutter_chat_ui',
404-
);
405-
case types.Status.sending:
406-
return InheritedChatTheme.of(context).theme.sendingIcon != null
407-
? InheritedChatTheme.of(context).theme.sendingIcon!
408-
: Center(
409-
child: SizedBox(
410-
height: 10,
411-
width: 10,
412-
child: CircularProgressIndicator(
413-
backgroundColor: Colors.transparent,
414-
strokeWidth: 1.5,
415-
valueColor: AlwaysStoppedAnimation<Color>(
416-
InheritedChatTheme.of(context).theme.primaryColor,
417-
),
418-
),
419-
),
420-
);
421-
default:
422-
return const SizedBox(width: 8);
423-
}
424-
}
425364
}

0 commit comments

Comments
 (0)