onInit method

  1. @override
void onInit()
override

Called immediately after the widget is allocated in memory. You might use this to initialize something for the controller.

Implementation

@override
void onInit() {
  if(textEditingController != null) {
    _isMyController = false;
  }
  populateComposerId();
  _suggestionListStream = _suggestionListController.stream;
  _previousTextStream = _previousTextController.stream;

  _dateString = DateTime.now().millisecondsSinceEpoch.toString();
  _uiMessageListener = "${_dateString}UI_message_listener";
  _uiEventListener = "${_dateString}UI_event_listener";

  /// Subscribe to the stream
  _subscription =
      _suggestionListStream.listen((List<SuggestionListItem> value) {
    bool shouldScrollDown = false;
    if (value.isNotEmpty && _currentSearchKeyword != null) {
      if (_searcKeywordChanged) {
        suggestions = value;
        _searcKeywordChanged = false;
      } else {
        for (var element in value) {
          if (!suggestions.contains(element)) {
            suggestions.add(element);
          }
        }

        shouldScrollDown = true;
      }
      hasMore = true;
      update();

      CometChatUIEvents.showPanel(
          composerId,
          CustomUIPosition.composerPreview,
          (context) => getList(context, textEditingController!));
      if (shouldScrollDown) {
        _scrollDown();
      }
    } else {
      if (_searcKeywordChanged) {
        CometChatUIEvents.hidePanel(
            composerId, CustomUIPosition.composerPreview);
        suggestions.clear();
      }
      /// suggestions.clear();
      /// CometChatUIEvents.hidePanel(composerId, CustomUIPosition.composerPreview);
      hasMore = false;
      update();
    }
  });

  _previousTextStream.listen((String value) {
    _previousText = value;
  });

  initializeFormatters();
  textEditingController ??= CustomTextEditingController(
        text: text, theme: cometChatTheme, formatters: _formatters);

  CometChatMessageEvents.addMessagesListener(_uiMessageListener, this);
  CometChatUIEvents.addUiListener(_uiEventListener, this);

  if (stateCallBack != null) {
    stateCallBack!(this);
  }

  if (user != null) {
    receiverID = user!.uid;
    receiverType = ReceiverTypeConstants.user;
  } else if (group != null) {
    receiverID = group!.guid;
    receiverType = ReceiverTypeConstants.group;
  }

  _getLoggedInUser();

  focusNode = FocusNode();

  focusNode.addListener(_onFocusChange);

  super.onInit();
}