Jaime Blasco

User targetPlatform to detect PointerDeviceKind

@@ -3,7 +3,6 @@ @@ -3,7 +3,6 @@
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 import 'dart:async'; 5 import 'dart:async';
6 -import 'dart:io';  
7 import 'package:flutter/cupertino.dart'; 6 import 'package:flutter/cupertino.dart';
8 import 'package:flutter/foundation.dart'; 7 import 'package:flutter/foundation.dart';
9 import 'package:flutter/gestures.dart'; 8 import 'package:flutter/gestures.dart';
@@ -301,15 +300,8 @@ class _ModalBottomSheetState extends State<ModalBottomSheet> @@ -301,15 +300,8 @@ class _ModalBottomSheetState extends State<ModalBottomSheet>
301 // Otherwise the calculate the velocity with a VelocityTracker 300 // Otherwise the calculate the velocity with a VelocityTracker
302 if (_velocityTracker == null) { 301 if (_velocityTracker == null) {
303 // Checking the device type as per the OS installed in it 302 // Checking the device type as per the OS installed in it
304 - _velocityTracker = VelocityTracker(  
305 - // SmartPhone Devices  
306 - (Platform.isAndroid || Platform.isIOS)  
307 - ? PointerDeviceKind.touch  
308 - : // PCs or desktops or Laptops devices has mouse pointers  
309 - (Platform.isLinux || Platform.isWindows || Platform.isMacOS)  
310 - ? PointerDeviceKind.mouse  
311 - : // Some unknown devices  
312 - PointerDeviceKind.unknown); 303 + final pointerKind = defaultPointerDeviceKind(context);
  304 + _velocityTracker = VelocityTracker(pointerKind);
313 _startTime = DateTime.now(); 305 _startTime = DateTime.now();
314 } 306 }
315 DragUpdateDetails dragDetails; 307 DragUpdateDetails dragDetails;
@@ -474,3 +466,21 @@ class _CustomBottomSheetLayout extends SingleChildLayoutDelegate { @@ -474,3 +466,21 @@ class _CustomBottomSheetLayout extends SingleChildLayoutDelegate {
474 return false; 466 return false;
475 } 467 }
476 } 468 }
  469 +
  470 +// Used by VelocityTracker
  471 +// https://github.com/flutter/flutter/pull/64267#issuecomment-694196304
  472 +PointerDeviceKind defaultPointerDeviceKind(BuildContext context) {
  473 + final platform = Theme.of(context)?.platform ?? defaultTargetPlatform;
  474 + switch (platform) {
  475 + case TargetPlatform.iOS:
  476 + case TargetPlatform.android:
  477 + return PointerDeviceKind.touch;
  478 + case TargetPlatform.linux:
  479 + case TargetPlatform.macOS:
  480 + case TargetPlatform.windows:
  481 + return PointerDeviceKind.mouse;
  482 + case TargetPlatform.fuchsia:
  483 + return PointerDeviceKind.unknown;
  484 + }
  485 + return PointerDeviceKind.unknown;
  486 +}