inputWidget method
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;
}