From 92b8711ccf1ff5d78092532183e81fd0a489cce1 Mon Sep 17 00:00:00 2001 From: Ayush Shekhar Date: Wed, 6 Apr 2022 18:26:09 +0530 Subject: [PATCH] Removed the inline span builder code from messageinput --- .../lib/src/message_input_controller.dart | 16 +++++----- .../src/message_text_field_controller.dart | 29 ++++++++++--------- 2 files changed, 24 insertions(+), 21 deletions(-) diff --git a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart index f7ddc1e1..65c6d8d8 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_input_controller.dart @@ -19,37 +19,37 @@ class MessageInputController extends ValueNotifier { /// message. factory MessageInputController({ Message? message, - Map? textPatternSpan, + Map? textPatternStyle, }) => MessageInputController._( initialMessage: message ?? Message(), - textPatternSpan: textPatternSpan, + textPatternStyle: textPatternStyle, ); /// Creates a controller for an editable text field from an initial [text]. factory MessageInputController.fromText( String? text, { - Map? textPatternSpan, + Map? textPatternStyle, }) => MessageInputController._( initialMessage: Message(text: text), - textPatternSpan: textPatternSpan, + textPatternStyle: textPatternStyle, ); /// Creates a controller for an editable text field from initial /// [attachments]. factory MessageInputController.fromAttachments( List attachments, { - Map? textPatternSpan, + Map? textPatternStyle, }) => MessageInputController._( initialMessage: Message(attachments: attachments), - textPatternSpan: textPatternSpan, + textPatternStyle: textPatternStyle, ); MessageInputController._({ required Message initialMessage, - Map? textPatternSpan, + Map? textPatternStyle, }) : _textEditingController = MessageTextFieldController.fromValue( initialMessage.text == null ? const TextEditingValue() @@ -57,7 +57,7 @@ class MessageInputController extends ValueNotifier { text: initialMessage.text!, composing: TextRange.collapsed(initialMessage.text!.length), ), - textPatternSpan: textPatternSpan, + textPatternStyle: textPatternStyle, ), _initialMessage = initialMessage, super(initialMessage) { diff --git a/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart b/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart index cba47cf2..0f9f75c6 100644 --- a/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart +++ b/packages/stream_chat_flutter_core/lib/src/message_text_field_controller.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; -/// A function that takes a [BuildContext] and returns an [InlineSpan]. -typedef InlineSpanBuilder = InlineSpan Function( +/// A function that takes a [BuildContext] and returns a [TextStyle]. +typedef TextStyleBuilder = TextStyle? Function( BuildContext context, String text, ); @@ -11,17 +11,17 @@ class MessageTextFieldController extends TextEditingController { /// Returns a new MessageTextFieldController MessageTextFieldController({ String? text, - this.textPatternSpan, + this.textPatternStyle, }) : super(text: text); /// Returns a new MessageTextFieldController with the given text [value]. MessageTextFieldController.fromValue( TextEditingValue? value, { - this.textPatternSpan, + this.textPatternStyle, }) : super.fromValue(value); /// A map of style to apply to the text matching the RegExp patterns. - final Map? textPatternSpan; + final Map? textPatternStyle; /// Builds a [TextSpan] from the current text, /// highlighting the matches for [textPatternStyle]. @@ -31,7 +31,7 @@ class MessageTextFieldController extends TextEditingController { TextStyle? style, required bool withComposing, }) { - final pattern = textPatternSpan; + final pattern = textPatternStyle; if (pattern == null || pattern.isEmpty) { return super.buildTextSpan( context: context, @@ -45,10 +45,13 @@ class MessageTextFieldController extends TextEditingController { onMatch: (match) { final text = match[0]!; final key = pattern.keys.firstWhere((it) => it.hasMatch(text)); - return pattern[key]?.call(context, text) ?? - TextSpan( - text: text, - ); + return TextSpan( + text: text, + style: pattern[key]?.call( + context, + text, + ), + ); }, ); } @@ -57,10 +60,10 @@ class MessageTextFieldController extends TextEditingController { extension _TextSpanX on TextSpan { TextSpan splitMapJoin( Pattern pattern, { - InlineSpan Function(Match)? onMatch, - InlineSpan Function(InlineSpan)? onNonMatch, + TextSpan Function(Match)? onMatch, + TextSpan Function(TextSpan)? onNonMatch, }) { - final children = []; + final children = []; toPlainText().splitMapJoin( pattern,