scroll chat by composer height change delta
slightly evil but works
This commit is contained in:
parent
eae79d943d
commit
bcb085c035
1 changed files with 18 additions and 0 deletions
|
|
@ -99,6 +99,24 @@ final class const RoomChat({
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
final lastComposerHeight = useRef(composerSize.value);
|
||||||
|
|
||||||
|
useEffect(() {
|
||||||
|
final delta = composerSize.value - lastComposerHeight.value;
|
||||||
|
lastComposerHeight.value = composerSize.value;
|
||||||
|
|
||||||
|
if (delta != 0) {
|
||||||
|
WidgetsBinding.instance.addPostFrameCallback((_) {
|
||||||
|
final controller = scroll.scrollController;
|
||||||
|
if (!controller.hasClients) return;
|
||||||
|
|
||||||
|
controller.jumpTo(controller.position.pixels - delta);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}, [composerSize.value]);
|
||||||
|
|
||||||
final composerNode = useFocusNode(
|
final composerNode = useFocusNode(
|
||||||
onKeyEvent: (_, event) {
|
onKeyEvent: (_, event) {
|
||||||
if (event is KeyDownEvent && event.logicalKey == .escape) {
|
if (event is KeyDownEvent && event.logicalKey == .escape) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue