Attempt 1 of repositioning toolbar

pull/1384/head
Kelrap 1 year ago
parent 4b80871922
commit a911b9f852

@ -8,12 +8,14 @@ class MessageSelectionOverlay extends StatelessWidget {
final Function closeToolbar;
final Widget toolbar;
final Widget overlayMessage;
final bool ownMessage;
const MessageSelectionOverlay({
required this.controller,
required this.closeToolbar,
required this.toolbar,
required this.overlayMessage,
required this.ownMessage,
super.key,
});
@ -22,6 +24,8 @@ class MessageSelectionOverlay extends StatelessWidget {
return Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisSize: MainAxisSize.max,
crossAxisAlignment:
ownMessage ? CrossAxisAlignment.end : CrossAxisAlignment.start,
children: [
OverlayHeader(
controller: controller,
@ -33,7 +37,8 @@ class MessageSelectionOverlay extends StatelessWidget {
Flexible(
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
crossAxisAlignment:
ownMessage ? CrossAxisAlignment.end : CrossAxisAlignment.start,
children: [
toolbar,
const SizedBox(height: 9),

@ -5,6 +5,7 @@ import 'package:fluffychat/config/themes.dart';
import 'package:fluffychat/pages/chat/chat.dart';
import 'package:fluffychat/pangea/enum/message_mode_enum.dart';
import 'package:fluffychat/pangea/matrix_event_wrappers/pangea_message_event.dart';
import 'package:fluffychat/pangea/utils/any_state_holder.dart';
import 'package:fluffychat/pangea/utils/error_handler.dart';
import 'package:fluffychat/pangea/utils/overlay.dart';
import 'package:fluffychat/pangea/widgets/chat/message_audio_card.dart';
@ -74,6 +75,36 @@ class ToolbarDisplayController {
}
focusNode.requestFocus();
final LayerLinkAndKey layerLinkAndKey =
MatrixState.pAnyState.layerLinkAndKey(targetId);
final targetRenderBox =
layerLinkAndKey.key.currentContext?.findRenderObject();
if (targetRenderBox != null) {
final Size transformTargetSize = (targetRenderBox as RenderBox).size;
messageWidth = transformTargetSize.width;
final Offset targetOffset = (targetRenderBox).localToGlobal(Offset.zero);
final double minValue =
controller.scrollController.position.minScrollExtent;
final double maxValue =
controller.scrollController.position.maxScrollExtent;
final double middlePoint = controller.scrollController.offset -
targetOffset.dy +
MediaQuery.of(context).size.height / 2 +
37;
// Scroll so message is right under half point of screen
controller.scrollController.animateTo(
middlePoint < minValue
? minValue
: middlePoint > maxValue
? maxValue
: middlePoint,
duration: FluffyThemes.animationDuration,
curve: FluffyThemes.animationCurve,
);
}
final Widget overlayMessage = OverlayMessage(
pangeaMessageEvent.event,
timeline: pangeaMessageEvent.timeline,
@ -97,6 +128,7 @@ class ToolbarDisplayController {
closeToolbar: closeToolbar,
toolbar: toolbar!,
overlayMessage: overlayMessage,
ownMessage: pangeaMessageEvent.ownMessage,
);
} catch (err) {
debugger(when: kDebugMode);
@ -129,7 +161,6 @@ class ToolbarDisplayController {
() => toolbarModeStream.add(mode),
);
}
// });
}
bool get highlighted {

Loading…
Cancel
Save