inputWidget method

Widget inputWidget()

Implementation

Widget inputWidget() {
  List<Widget> list = [];

  CornerRadius radius = ChatRoomSettings.inputBarRadius;

  double height = 38;
  double circle = height /
      () {
        if (radius == CornerRadius.extraSmall) {
          return 16;
        } else if (radius == CornerRadius.small) {
          return 8;
        } else if (radius == CornerRadius.medium) {
          return 4;
        } else {
          return 2;
        }
      }();

  list.add(
    Expanded(
      child: Container(
        decoration: BoxDecoration(
          color: (ChatUIKitTheme.of(context).color.isDark
              ? ChatUIKitTheme.of(context).color.neutralColor2
              : ChatUIKitTheme.of(context).color.neutralColor95),
          borderRadius: BorderRadius.circular(circle),
        ),
        margin: const EdgeInsets.all(8),
        padding: const EdgeInsets.symmetric(horizontal: 16),
        child: TextField(
          textDirection: widget.textDirection,
          keyboardAppearance: ChatUIKitTheme.of(context).color.isDark
              ? Brightness.dark
              : Brightness.light,
          maxLines: 4,
          minLines: 1,
          style: TextStyle(
            color: (ChatUIKitTheme.of(context).color.isDark
                ? ChatUIKitTheme.of(context).color.neutralColor98
                : ChatUIKitTheme.of(context).color.neutralColor1),
            fontSize: ChatUIKitTheme.of(context).font.bodyLarge.fontSize,
            fontWeight: ChatUIKitTheme.of(context).font.bodyLarge.fontWeight,
          ),
          decoration: const InputDecoration(
            border: InputBorder.none,
            isDense: true,
          ),
          controller: textEditingController,
          focusNode: focusNode,
          onTap: () {},
        ),
      ),
    ),
  );

  List<Widget> trailing = [];
  trailing.add(
    InkWell(
      onTap: () {
        setState(() {
          _inputType = _inputType == InputType.emoji
              ? InputType.text
              : InputType.emoji;
          if (_inputType == InputType.emoji) {
            focusNode.unfocus();
          } else {
            focusNode.requestFocus();
          }
        });
      },
      child: () {
        return _inputType == InputType.emoji
            ? ChatImageLoader.textKeyboard(
                color: (ChatUIKitTheme.of(context).color.isDark
                    ? ChatUIKitTheme.of(context).color.neutralColor98
                    : ChatUIKitTheme.of(context).color.neutralColor1),
              )
            : ChatImageLoader.face(
                color: (ChatUIKitTheme.of(context).color.isDark
                    ? ChatUIKitTheme.of(context).color.neutralColor98
                    : ChatUIKitTheme.of(context).color.neutralColor1),
              );
      }(),
    ),
  );

  trailing.add(InkWell(
    onTap: () {
      if (widget.onSend != null) {
        widget.onSend!.call(msg: textEditingController.text);
      } else {
        ChatRoomUIKit.roomController(context)
            ?.sendMessage(textEditingController.text);
      }
      textEditingController.text = '';
      setState(() {
        _inputType = InputType.normal;
      });
    },
    child: ChatImageLoader.airplane(),
  ));

  list.addAll(trailing.map(
    (e) {
      return Padding(
        padding: const EdgeInsets.symmetric(horizontal: 4, vertical: 11),
        child: ConstrainedBox(
          constraints: BoxConstraints.loose(const Size(30, 30)),
          child: e,
        ),
      );
    },
  ).toList());

  Widget content = Row(
    textDirection: widget.textDirection,
    crossAxisAlignment: CrossAxisAlignment.end,
    children: list,
  );

  content = Container(
    padding: const EdgeInsets.symmetric(horizontal: 8),
    color: (ChatUIKitTheme.of(context).color.isDark
        ? ChatUIKitTheme.of(context).color.neutralColor1
        : ChatUIKitTheme.of(context).color.neutralColor98),
    child: content,
  );

  return content;
}