1. 30 Nov, 2023 1 commit
    • xubaolin's avatar
      Introduce multi-touch drag strategies for `DragGestureRecognizer` (#136708) · d49dcaa6
      xubaolin authored
      Fixes #11884
      
      As #38926 pointed out, the current Flutter implementation of multi-finger drag behavior is different from iOS and Android.
      This change introduces the `MultitouchDragStrategy` attribute, which implements the Android behavior and can be controlled through `ScrollBehavior`, while retaining the ability to extend iOS behavior in the future.
      d49dcaa6
  2. 20 Sep, 2023 1 commit
    • Greg Spencer's avatar
      Remove 'must be non-null' and 'must not be null' comments in widgets library (#134992) · 6e5134b0
      Greg Spencer authored
      ## Description
      
      This removes all of the comments that are of the form "so-and-so (must not be null|can ?not be null|must be non-null)" from the cases where those values are defines as non-nullable values.
      
      This PR removes them from the widgets library.
      
      This was done by hand, since it really didn't lend itself to scripting, so it needs to be more than just spot-checked, I think. I was careful to leave any comment that referred to parameters that were nullable, but I may have missed some.
      
      In addition to being no longer relevant after null safety has been made the default, these comments were largely fragile, in that it was easy for them to get out of date, and not be accurate anymore anyhow.
      
      This did create a number of constructor comments which basically say "Creates a [Foo].", but I don't really know how to avoid that in a large scale change, since there's not much you can really say in a lot of cases.  I think we might consider some leniency for constructors to the "Comment must be meaningful" style guidance (which we de facto have already, since there are a bunch of these).
      
      ## Related PRs
      - https://github.com/flutter/flutter/pull/134984
      - https://github.com/flutter/flutter/pull/134991
      - https://github.com/flutter/flutter/pull/134993
      - https://github.com/flutter/flutter/pull/134994
      
      ## Tests
       - Documentation only change.
      6e5134b0
  3. 25 Aug, 2023 1 commit
  4. 23 Mar, 2023 1 commit
  5. 21 Mar, 2023 1 commit
  6. 14 Mar, 2023 1 commit
  7. 10 Mar, 2023 1 commit
  8. 30 Jan, 2023 1 commit
  9. 24 Jan, 2023 1 commit
  10. 19 Sep, 2022 2 commits
  11. 26 May, 2022 1 commit
  12. 07 May, 2022 1 commit
  13. 14 Apr, 2022 1 commit
  14. 13 Apr, 2022 1 commit
    • Callum Moffat's avatar
      Support trackpad gestures in framework (#89944) · 30a50180
      Callum Moffat authored
      * Implement trackpad gestures in framework
      
      * Touch and Pan/Zoom pointers have separate IDs now
      
      * Handle trackpad pointer device type
      
      * Respect supportedDevices for pan/zoom events
      
      * Update after rebase
      
      * Fix check failures
      
      * Avoid error with very short drags
      
      * Address feedback
      
      * Refactor drag event handler
      
      * Address more feedback
      
      * Add some missing punctuation
      30a50180
  15. 04 Apr, 2022 1 commit
  16. 31 Mar, 2022 1 commit
  17. 29 Mar, 2022 1 commit
  18. 21 Mar, 2022 1 commit
  19. 20 Oct, 2021 1 commit
  20. 07 Sep, 2021 1 commit
  21. 16 Aug, 2021 1 commit
  22. 11 Aug, 2021 1 commit
  23. 13 May, 2021 1 commit
  24. 03 May, 2021 1 commit
  25. 28 Apr, 2021 1 commit
  26. 02 Apr, 2021 1 commit
  27. 11 Mar, 2021 1 commit
  28. 17 Sep, 2020 1 commit
    • Jonah Williams's avatar
      Deprecate VelocityTracker default constructor and added... · b1d17c91
      Jonah Williams authored
      Deprecate VelocityTracker default constructor and added VelocityTracker.withKind constructor (#66043)
      
      We've gotten feedback that the VelocityTracker change was disruptive, though it did not break any of the flutter framework or customer tests. In order to make the change non-breaking, PointerDeviceKind parameter can be made optional.
      
      Nevertheless, this parameter should be provided so that the existing touch handlers can use more accurate gestures on mouse/stylus inputs, so we can encourage this by deprecating the default constructor and pointing users towards the VelocityTracker.withKind constructor that takes a non-optional parameter
      b1d17c91
  29. 15 Sep, 2020 1 commit
    • Alexandre Ardhuin's avatar
      Reland "Nnbd widgets" (#65528) · b007a81a
      Alexandre Ardhuin authored
      * Reland "Nnbd widgets (#64672)"
      
      This reverts commit 127e6790.
      
      * remove non-nullable enforcement on AsyncSnapshot
      
      * make data param non-nullable for AsyncSnapshot.withData
      
      * make some Text params non-nullable
      b007a81a
  30. 09 Sep, 2020 2 commits
    • Michael Goderbauer's avatar
      Revert "Nnbd widgets (#64672)" (#65488) · 127e6790
      Michael Goderbauer authored
      This reverts commit e682ec71.
      127e6790
    • Alexandre Ardhuin's avatar
      Nnbd widgets (#64672) · e682ec71
      Alexandre Ardhuin authored
      * migrate widget to nullsafety
      
      * remove double blank line after license
      
      * address review comments in actions.dart
      
      * nullable ObjectKey.value
      
      * use local variable oldElement
      
      * make State.build non-nullable
      
      * make State.context non-nullable
      
      * newline at eof
      
      * make ProxyWidget.child non-nullable
      
      * make _InactiveElements.debugContains non-nullable
      
      * make Element.depth non-nullable
      
      * make ProxyElement.build non-nullable
      
      * make StatefulElement.state non-nullable
      
      * remove 'Notice that'
      
      * avoid cast of list in RenderObjectElement.updateChildren
      
      * make IndexedSlot.value non-nullable
      
      * avoid cast of list in MultiChildRenderObjectElement.mount
      
      * make some WidgetsApp parameters non-nullable
      
      * hitTest take non-nullable position
      
      * make ScrollableState.position non-nullable
      
      * use _pixels instead of pixels
      
      * make ViewportOffset.pixels non-nullable
      
      * make param and return type of IndexedWidgetBuilder non-nullable
      
      * unused_import
      
      * make context param non-nullable for Builder in animated_list.dart
      
      * make ScrollMetrics.viewportDimension non-nullable
      
      * make ScrollMetrics.{min,max}ScrollExtent non-nullable
      
      * make _Location.file non-nullable
      
      * _WidgetForTypeTests.createElement throw UnimplementedError
      
      * update _NullWidget.build error message
      
      * make _ShortcutsState.manager non-nullable
      
      * Fix childCount issues for NNBD
      
      * fix childCount computation on web
      
      * increase max value on js side to compute childCount
      
      * make aspect parameter of dependOnInheritedWidgetOfExactType nullable
      
      * merge has{min,max}ScrollExtent into hasScrollExtents
      
      * update focus_manager.dart
      
      * address review comments in icon.dart
      
      * address review comments in image.dart
      
      * address review comments in routes.dart
      
      * address review comments in scroll_activity.dart
      
      * update doc comments
      
      * make UserScrollNotification.direction non-nullable and required
      
      * rename hasScrollExtents to hasContentDimensions
      
      * unnecessary late
      Co-authored-by: 's avatarIan Hickson <ian@hixie.ch>
      e682ec71
  31. 08 Sep, 2020 1 commit
    • Jonah Williams's avatar
      [framework] make hit slop based on device pointer kind for drag/pan/scale gestures (#64267) · 29898812
      Jonah Williams authored
      Currently the framework uses fairly large "hit slop" values to disambiguate taps from drags/pans. This makes sense on touch devices where the interaction is not very precise, on mice however it can feel as if the UI is lagging. This is immediately noticeable on our infra dashboard, where it takes almost half of a grid square of drag before the actual drag kicks in.
      
      One potential solution is to always use smaller constants depending on whether the interaction is mouse or touch based. The only reasonable choice is to use the pointer device kind and not target platform - same platform can have different input sources. This requires exposing the pointer device kind in a few new places in several of the gesture detectors, and using the enum to compute the correct hit slop from an expanded set of constants.
      
      This almost works, however there are a few places (notably ListViews) which uses the touch hit slop as a default value in scroll physics. It does not seem like it will be easy to disambiguate a user provided scroll physics constant from the default and/or adjust it somehow - this might require significant changes to scroll physics which I have left out of this PR.
      
      This PR does not adjust:
      
      kTouchSlop used in scroll_physics.dart's minFlingDistance
      kTouchSlop used in PrimaryPointerGestureRecognizer/LongPressGestureRecognizer
      29898812
  32. 12 Aug, 2020 1 commit
  33. 11 Jun, 2020 1 commit
  34. 08 May, 2020 1 commit
  35. 03 Mar, 2020 1 commit
  36. 31 Jan, 2020 1 commit
  37. 28 Jan, 2020 1 commit
  38. 24 Jan, 2020 1 commit