import 'dart:io' show Platform; import 'package:flutter/gestures.dart' show PointerDeviceKind; import 'package:flutter/material.dart'; const Set desktopDragDevices = { .touch, .mouse, .trackpad, .stylus, .invertedStylus, .unknown, }; class CustomScrollBehavior extends MaterialScrollBehavior { const CustomScrollBehavior(); @override Widget buildScrollbar( BuildContext context, Widget child, ScrollableDetails details, ) => child; @override Widget buildOverscrollIndicator( BuildContext context, Widget child, ScrollableDetails details, ) { if (Platform.isAndroid) { return StretchingOverscrollIndicator( axisDirection: details.direction, clipBehavior: details.decorationClipBehavior ?? .hardEdge, child: child, ); } return child; } @override Set get dragDevices => desktopDragDevices; } class NoOverscrollIndicator extends CustomScrollBehavior { const NoOverscrollIndicator(); @override Widget buildOverscrollIndicator( BuildContext context, Widget child, ScrollableDetails details, ) => child; }