Attempt 1 of repositioning toolbar
This commit is contained in:
parent
4b80871922
commit
a911b9f852
2 changed files with 38 additions and 2 deletions
|
|
@ -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…
Add table
Reference in a new issue