From 38dc787e2793f49ca3584717a6ff3729afb2bb8b Mon Sep 17 00:00:00 2001 From: Shawn Date: Wed, 10 May 2023 14:26:31 -0600 Subject: [PATCH] Maintain timeline year when resizing window --- lib/ui/screens/timeline/widgets/_scrolling_viewport.dart | 5 +++++ .../timeline/widgets/_scrolling_viewport_controller.dart | 3 +++ 2 files changed, 8 insertions(+) diff --git a/lib/ui/screens/timeline/widgets/_scrolling_viewport.dart b/lib/ui/screens/timeline/widgets/_scrolling_viewport.dart index 4be33802..ecd6adbd 100644 --- a/lib/ui/screens/timeline/widgets/_scrolling_viewport.dart +++ b/lib/ui/screens/timeline/widgets/_scrolling_viewport.dart @@ -26,6 +26,7 @@ class _ScalingViewportState extends State<_ScrollingViewport> { late final _ScrollingViewportController controller = _ScrollingViewportController(this); static const double _minTimelineSize = 100; final _currentEventMarker = ValueNotifier(null); + Size? _prevSize; @override void initState() { @@ -52,6 +53,10 @@ class _ScalingViewportState extends State<_ScrollingViewport> { @override Widget build(BuildContext context) { + if (_prevSize != null && _prevSize != context.mq.size) { + scheduleMicrotask(controller._handleResize); + } + _prevSize = context.mq.size; return GestureDetector( // Handle pinch to zoom onScaleUpdate: controller._handleScaleUpdate, diff --git a/lib/ui/screens/timeline/widgets/_scrolling_viewport_controller.dart b/lib/ui/screens/timeline/widgets/_scrolling_viewport_controller.dart index bb546063..83fa776b 100644 --- a/lib/ui/screens/timeline/widgets/_scrolling_viewport_controller.dart +++ b/lib/ui/screens/timeline/widgets/_scrolling_viewport_controller.dart @@ -90,4 +90,7 @@ class _ScrollingViewportController extends ChangeNotifier { void _handleScaleUpdate(ScaleUpdateDetails details) { setZoom(details.scale * _zoomOnScaleStart); } + + /// Maintain current yr when the app changes size + void _handleResize() => jumpToYear(_currentYr.value); }