In my project, I have a section made by a ListView which build a list of DropRegion. Inside of each DropRegion there can be a list of items wrapped by a DragItemWidget.
The issue I am facing is that if I try to scroll the list while dragging an item, it throws some weird exceptions, but the software is still working fine.
Am I doing anything wrong?
Code sample for testing (not actual project)
```dart
import 'package:flutter/material.dart';
import 'package:super_drag_and_drop/super_drag_and_drop.dart';
void main() {
runApp(const MyApp());
}
class MyData {
DateTime date;
List items;
MyData({required this.date, List? items}) : items = items ?? [];
}
class DataHandler with ChangeNotifier {
final List items;
DataHandler()
: items = List.generate(
20,
(index) => MyData(
date: DateTime(2024, 1, index + 1), items: ['Item: $index']));
void swapItems(DateTime fromDate, String itemToMove, DateTime toDate) {
final oldIndex = items.indexWhere((element) => element.date == fromDate);
items[oldIndex].items.remove(itemToMove);
final newIndex = items.indexWhere((element) => element.date == toDate);
items[newIndex].items.add(itemToMove);
notifyListeners();
}
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(body: DragAndDrop()),
);
}
}
class DragAndDrop extends StatelessWidget {
DragAndDrop({super.key});
final myHandler = DataHandler();
@override
Widget build(BuildContext context) {
return SizedBox(
width: 200,
child: ListenableBuilder(
listenable: myHandler,
builder: (context, child) => ListView.separated(
itemBuilder: (context, index) => DateBlock(
data: myHandler.items[index],
myHandler: myHandler,
),
separatorBuilder: (context, index) => const SizedBox(height: 5),
itemCount: myHandler.items.length,
),
),
);
}
}
class DateBlock extends StatelessWidget {
const DateBlock({
super.key,
required this.data,
required this.myHandler,
});
final MyData data;
final DataHandler myHandler;
@override
Widget build(BuildContext context) {
return DropRegion(
onDropOver: (p0) {
return DropOperation.move;
},
formats: Formats.standardFormats,
onPerformDrop: (PerformDropEvent event) async {
final draggedItem =
event.session.items.first.localData as (DateTime, String);
myHandler.swapItems(draggedItem.$1, draggedItem.$2, data.date);
},
child: Row(
children: [
Text("Day: ${data.date.day.toString()}"),
Expanded(
child: ListView.separated(
shrinkWrap: true,
itemBuilder: (context, index) => DraggableListTile(
item: data.items[index],
date: data.date,
),
separatorBuilder: (context, index) => const SizedBox(height: 5),
itemCount: data.items.length,
),
),
],
),
);
}
}
class DraggableListTile extends StatelessWidget {
const DraggableListTile({
super.key,
required this.item,
required this.date,
});
final DateTime date;
final String item;
@override
Widget build(BuildContext context) {
return DragItemWidget(
allowedOperations: () => [DropOperation.move],
dragItemProvider: (p0) {
return DragItem(
localData: (date, item),
);
},
child: DraggableWidget(
child: Container(
//height: 100,
padding: const EdgeInsets.all(15),
color: Colors.red,
child: Text(item),
),
),
);
}
}
```
This is the exception
```console
══╡ EXCEPTION CAUGHT BY GESTURES LIBRARY ╞══════════════════════════════════════════════════════════
The following assertion was thrown while handling a pointer data packet:
Assertion failed:
file:///Users/leonardo/Documents/flutter/packages/flutter/lib/src/gestures/events.dart:1566:15
!identical(kind, PointerDeviceKind.trackpad)
is not true
When the exception was thrown, this was the stack:
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 297:3 throw_
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 38:3 assertFailed
packages/flutter/src/gestures/events.dart 1566:50 new
packages/flutter/src/gestures/converter.dart 146:26
dart-sdk/lib/internal/iterable.dart 403:20 moveNext
dart-sdk/lib/internal/iterable.dart 882:20 moveNext
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 1140:20 next
dart-sdk/lib/collection/queue.dart 753:14 addAll
packages/flutter/src/gestures/binding.dart 297:7 [_handlePointerDataPacket]
packages/super_native_extensions/src/web/drag_driver.dart 63:43 [_onPointerDataPacketInner]
packages/super_native_extensions/src/web/drag_driver.dart 56:7 [_onPointerDataPacket]
lib/_engine/engine/platform_dispatcher.dart 1361:5 invoke1
lib/_engine/engine/platform_dispatcher.dart 286:5 invokeOnPointerDataPacket
lib/_engine/engine/pointer_binding.dart 398:30 [_sendToFramework]
lib/_engine/engine/pointer_binding.dart 224:7 onPointerData
lib/_engine/engine/pointer_binding.dart 717:14 [_handleWheelEvent]
lib/_engine/engine/pointer_binding.dart 1022:7
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 550:37 _checkAndCall
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 555:39 dcall
════════════════════════════════════════════════════════════════════════════════════════════════════
```
Video demonstration
https://github.com/superlistapp/super_native_extensions/assets/45425606/0ac37504-651c-4ba8-b581-881a8f442d2d
Doctor output
```console
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.19.5, on macOS 14.2.1 23C71 darwin-arm64, locale it-IT)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
[✓] Xcode - develop for iOS and macOS (Xcode 15.3)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2023.1)
[✓] VS Code (version 1.87.2)
[✓] Connected device (3 available)
[✓] Network resources
• No issues found!
```
In my project, I have a section made by a ListView which build a list of DropRegion. Inside of each DropRegion there can be a list of items wrapped by a DragItemWidget. The issue I am facing is that if I try to scroll the list while dragging an item, it throws some weird exceptions, but the software is still working fine.
Am I doing anything wrong?
Code sample for testing (not actual project)
```dart import 'package:flutter/material.dart'; import 'package:super_drag_and_drop/super_drag_and_drop.dart'; void main() { runApp(const MyApp()); } class MyData { DateTime date; ListThis is the exception
```console ══╡ EXCEPTION CAUGHT BY GESTURES LIBRARY ╞══════════════════════════════════════════════════════════ The following assertion was thrown while handling a pointer data packet: Assertion failed: file:///Users/leonardo/Documents/flutter/packages/flutter/lib/src/gestures/events.dart:1566:15 !identical(kind, PointerDeviceKind.trackpad) is not true When the exception was thrown, this was the stack: dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 297:3 throw_ dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 38:3 assertFailed packages/flutter/src/gestures/events.dart 1566:50 new packages/flutter/src/gestures/converter.dart 146:26Video demonstration
https://github.com/superlistapp/super_native_extensions/assets/45425606/0ac37504-651c-4ba8-b581-881a8f442d2dDoctor output
```console Doctor summary (to see all details, run flutter doctor -v): [✓] Flutter (Channel stable, 3.19.5, on macOS 14.2.1 23C71 darwin-arm64, locale it-IT) [✓] Android toolchain - develop for Android devices (Android SDK version 33.0.2) [✓] Xcode - develop for iOS and macOS (Xcode 15.3) [✓] Chrome - develop for the web [✓] Android Studio (version 2023.1) [✓] VS Code (version 1.87.2) [✓] Connected device (3 available) [✓] Network resources • No issues found! ```