/// Flex value for the messeage container defaults to 1
? /// Made so that the message container takes as much as possible
? /// if no height or width is passed explicity
? final int messageContainerFlex;
? /// Height for the Dash chat Widget
? final double height;
? // Width for the Dash chat Widget
? final double width;
? /// List of messages to display in the chat container
? /// Takes a [List] of [ChatMessage]
? final List<ChatMessage> messages;
? /// If provided, this text editing controller will be used for
? /// the text input.
? final TextEditingController textController;
? /// If provided, this focus node will be used for the text input.
? final FocusNode focusNode;
? /// Use to change the direction of the text ltr is used for
? /// launguages that start from left like English &
? /// rtl is used for languages like Arabic
? ///
? /// Defaults to `TextDirection.ltr`
? final TextDirection inputTextDirection;
? /// If provided will stop using the default controller
? /// i.e [TextEditingController] and will use this to update the
? /// text input field.
? final String text;
? /// If the text parameter is passed then onTextChange must also
? /// be passed.
? final Function(String) onTextChange;
? /// Used to provide input decoration to the text as default only
? /// to the input placeholder for the chat input
? /// "Add Message here...".
? final InputDecoration inputDecoration;
? ///Configures how the platform keyboard will select an uppercase or lowercase keyboard.
? ///Only supports text keyboards, other keyboard types will ignore this configuration. Capitalization is locale-aware.
? ///Defaults to [TextCapitalization.none]. Must not be null.
? final TextCapitalization textCapitalization;
? /// Usually new message added by the user gets [Uuid] String
? /// Can be override by proving this parameter
? final String Function() messageIdGenerator;
? /// The current user object [ChatUser].
? final ChatUser user;
? /// To function where you can make api calls and play
? /// with the [ChatMessage] obeject before make calls.
? final Function(ChatMessage) onSend;
? /// Should the send button be always active it defaults to false
? /// Usually it will only become active if some text is entered.
? final bool alwaysShowSend;
? /// [DateFormat] object for formatting date to show in [MessageListView]
? /// defaults to `HH:mm:ss`.
? final DateFormat dateFormat;
? /// [DateFormat] object for formatting time to show in [MessageContainer]
? /// defaults to `yyyy-MM-dd`.
? final DateFormat timeFormat;
? /// Should the user avatar be shown defaults to false and will not
? /// show the user avatar.
? final bool showUserAvatar;
? /// avatarBuilder will override the the default avatar which uses
? /// [CircleAvatar].
? final Widget Function(ChatUser) avatarBuilder;
? /// Should the avatar be shown for every message defaulst to false.
? final bool showAvatarForEveryMessage;
? /// [onPressAvatar] function takes a function with this structure
? /// [Function(ChatUser)] will trigger when the avatar
? /// is tapped on
? final Function(ChatUser) onPressAvatar;
? /// [onLongPressAvatar] function takea a function with this structure
? /// [Function(ChatUser)] will trigger when the avatar
? /// is long pressed
? final Function(ChatUser) onLongPressAvatar;
? /// [onLongPressMessage] function takea a function with this structure
? /// [Function(ChatMessage)] will trigger when the message
? /// is long pressed.
? final Function(ChatMessage) onLongPressMessage;
? /// Should the messages be shown in reversed order.
? final bool inverted;
? /// messageBuilder will override the the default chat container which uses
? /// and you will need to build complete message Widget it will not accept
? /// and include any other builder functions.
? final Widget Function(ChatMessage) messageBuilder;
? /// messageTextBuilder will override the the default message text.
? final Widget Function(String) messageTextBuilder;
? /// messageImageBuilder will override the the default Image.
? final Widget Function(String url) messageImageBuilder;
? /// messageTimeBuilder will override the the default text.
? final Widget Function(String url) messageTimeBuilder;
? /// dateBuilder will override the the default time text.
? final Widget Function(String) dateBuilder;
? /// A Widget that will be shown below the [MessageListView] like you can
? /// show a "tying..." at the end.
? final Widget Function() chatFooterBuilder;
? /// Main input length of the input text box defaulst to no limit.
? final int maxInputLength;
? /// Used to parse text to make it linkified text uses
? /// [flutter_parsed_text](https://pub.dev/packages/flutter_parsed_text)
? /// takes a list of [MatchText] in order to parse Email, phone, links
? /// and can also add custom pattersn using regex
? final List<MatchText> parsePatterns;
? /// Provides a custom style to the message container
? /// takes [BoxDecoration]
? final BoxDecoration messageContainerDecoration;
? /// [List] of [Widget] to show before the [TextField].
? final List<Widget> leading;
? /// [List] of [Widget] to show after the [TextField].will remove the
? /// send button and will have to implement that yourself.
? final List<Widget> trailing;
? /// sendButtonBuilder will override the the default [IconButton].
? final Widget Function(Function) sendButtonBuilder;
? /// Style for the [TextField].
? final TextStyle inputTextStyle;
? /// [TextField] container style.
? final BoxDecoration inputContainerStyle;
? /// Max length of the input lines default to 1.
? final int inputMaxLines;
? /// Should the input cursor be shown defaults to true.
? final bool showInputCursor;
? /// Width of the text input defaults to 2.0.
? final double inputCursorWidth;
? /// Color of the input cursor defaults to theme.
? final Color inputCursorColor;
? /// ScrollController for the [MessageListView] will use the default
? /// scrollcontroller in the Widget.
? final ScrollController scrollController;
? /// A Widget that will be shown below the [ChatInputToolbar] like you can
? /// show a list of buttons like file image just like in Slack app.
? final Widget Function() inputFooterBuilder;
? /// Padding for the [MessageListView].
? final EdgeInsetsGeometry messageContainerPadding;
? /// Callback method when the quickReply was tapped on
? /// will pass [Reply] as a paramter to function.
? final Function(Reply) onQuickReply;
? /// Container style for the QuickReply Container [BoxDecoration].
? final BoxDecoration quickReplyStyle;
? /// [TextStyle] for QuickReply textstyle.
? final TextStyle quickReplyTextStyle;
? /// quickReplyBuilder will override the the default QuickReply Widget.
? final Widget Function(Reply) quickReplyBuilder;
? /// Should the [trailling] Widgets be shown before the send button
? /// As default it will be shown before the send button.
? final bool showTraillingBeforeSend;
? /// Should the scroll to bottom widget be shown
? /// default to true.
? final bool scrollToBottom;
? /// Overrides the default [scrollToBottomWidget] with a custom widget
? final Widget Function() scrollToBottomWidget;
? /// Override the default behaviour of the onScrollToBottom Widget
? final Function onScrollToBottomPress;
? /// Should the LoadEarlier Floating widget be shown or use
? /// load as you scroll scheme whcih will call the [onLoadEarlier]
? /// function as default it is set to this scheme which is false.
? /// false - load as you scroll scheme
? /// true - shows a loadEarlier Widget
? final bool shouldShowLoadEarlier;
? /// Override the default behaviour of the onScrollToBottom Widget
? final Widget Function() showLoadEarlierWidget;
? /// Override the default behaviour of the onLoadEarleir Widget
? /// or used as a callback when the listView reaches the top
? final Function onLoadEarlier;
? /// Padding for the default input toolbar
? /// by default it padding is set 0.0
? final EdgeInsets inputToolbarPadding;
? /// Margin for the default input toolbar
? /// by default it padding is set 0.0
? final EdgeInsets inputToolbarMargin;