Collection screen now horizontally scrolls via mouse wheel.

This commit is contained in:
Alex Garneau
2025-03-24 09:51:09 -06:00
parent 6469ae1043
commit 9c773c23ff
2 changed files with 25 additions and 14 deletions

View File

@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
import 'package:wonders/common_libs.dart'; import 'package:wonders/common_libs.dart';
import 'package:wonders/logic/collectibles_logic.dart'; import 'package:wonders/logic/collectibles_logic.dart';
import 'package:wonders/logic/data/collectible_data.dart'; import 'package:wonders/logic/data/collectible_data.dart';

View File

@ -47,6 +47,13 @@ class _CollectionListState extends State<_CollectionList> with GetItStateMixin {
} }
} }
void _handleMouseWheel(PointerSignalEvent event) {
if (event is PointerScrollEvent && event.kind == PointerDeviceKind.mouse && _vtMode.value == false) {
final offset = event.scrollDelta.dy;
scrollController.jumpTo(scrollController.offset + offset);
}
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
watchX((CollectiblesLogic o) => o.statesById); watchX((CollectiblesLogic o) => o.statesById);
@ -66,20 +73,23 @@ class _CollectionListState extends State<_CollectionList> with GetItStateMixin {
}) })
]; ];
// Scroll view adapts to scroll vertically or horizontally // Scroll view adapts to scroll vertically or horizontally
return SingleChildScrollView( return Listener(
controller: scrollController, onPointerSignal: _handleMouseWheel,
scrollDirection: _vtMode.value ? Axis.vertical : Axis.horizontal, child: SingleChildScrollView(
child: Padding( controller: scrollController,
padding: EdgeInsets.all($styles.insets.lg), scrollDirection: _vtMode.value ? Axis.vertical : Axis.horizontal,
child: SeparatedFlex( child: Padding(
direction: _vtMode.value ? Axis.vertical : Axis.horizontal, padding: EdgeInsets.all($styles.insets.lg),
mainAxisSize: MainAxisSize.min, child: SeparatedFlex(
separatorBuilder: () => Gap($styles.insets.lg), direction: _vtMode.value ? Axis.vertical : Axis.horizontal,
children: [ mainAxisSize: MainAxisSize.min,
...collections, separatorBuilder: () => Gap($styles.insets.lg),
Gap($styles.insets.sm), children: [
if (kDebugMode) _buildResetBtn(context), ...collections,
], Gap($styles.insets.sm),
if (kDebugMode) _buildResetBtn(context),
],
),
), ),
), ),
); );