diff --git a/example/pubspec.lock b/example/pubspec.lock index 967c0ea..03952cb 100644 --- a/example/pubspec.lock +++ b/example/pubspec.lock @@ -102,26 +102,26 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" + sha256: "8dcda04c3fc16c14f48a7bb586d4be1f0d1572731b6d81d51772ef47c02081e0" url: "https://pub.dev" source: hosted - version: "10.0.9" + version: "11.0.1" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" url: "https://pub.dev" source: hosted - version: "3.0.9" + version: "3.0.10" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" lints: dependency: transitive description: @@ -219,10 +219,10 @@ packages: dependency: transitive description: name: test_api - sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" url: "https://pub.dev" source: hosted - version: "0.7.4" + version: "0.7.6" typed_data: dependency: transitive description: @@ -243,10 +243,10 @@ packages: dependency: transitive description: name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.2.0" vm_service: dependency: transitive description: diff --git a/lib/core/controller/controller.dart b/lib/core/controller/controller.dart index 75ba6dc..2123fe6 100644 --- a/lib/core/controller/controller.dart +++ b/lib/core/controller/controller.dart @@ -1,6 +1,7 @@ import 'dart:collection'; import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; import 'package:infinite_lazy_grid/core/background.dart'; import '../../utils/measure_size.dart'; import '../spatial_hashing.dart'; @@ -41,6 +42,11 @@ class LazyCanvasController with ChangeNotifier { OnWidgetEnteredRender? onWidgetEnteredRender; OnWidgetExitedRender? onWidgetExitedRender; Set _renderedWidgets = {}; // to track which widgets are currently rendered + PointerDownEventListener? rawPointerDownListener; + PointerMoveEventListener? rawPointerMoveListener; + PointerUpEventListener? rawPointerUpListener; + PointerCancelEventListener? rawPointerCancelListener; + PointerSignalEventListener? rawPointerSignalListener; bool debug; final Duration defaultAnimationDuration; @@ -54,6 +60,11 @@ class LazyCanvasController with ChangeNotifier { this.useIdsFromArgs = false, this.onWidgetEnteredRender, this.onWidgetExitedRender, + this.rawPointerSignalListener, + this.rawPointerDownListener, + this.rawPointerMoveListener, + this.rawPointerUpListener, + this.rawPointerCancelListener, }) : _hashCellSize = hashCellSize, _buildCacheExtent = buildCacheExtent != null ? buildCacheExtent + _kBuildCacheBuffer : null // only top left is considered so if a widget has long width, it'll not be rendered diff --git a/lib/core/render.dart b/lib/core/render.dart index 7c02438..e6d0aba 100644 --- a/lib/core/render.dart +++ b/lib/core/render.dart @@ -56,7 +56,13 @@ class _LazyCanvasState extends State with TickerProviderStateMixin