Skip to content

Commit 837b228

Browse files
committed
0.7.2: support for gestures and GestureDetector
1 parent 3dcea2a commit 837b228

23 files changed

+1614
-3
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## 0.7.2
2+
- Add GestureDetector, Offset, Velocity, and related classes
3+
14
## 0.7.1
25
- Support for Flutter 3.16
36

@@ -25,6 +28,7 @@
2528
- Add Image, ImageProvider, and NetworkImage (thanks to @DevAdalat)
2629
- Fix BoxDecoration not extending Decoration
2730
- Fix error when constructing a TextStyle without the `inherit` property
31+
2832
## 0.5.4
2933
- Support for Flutter 3.7
3034
- Add Spacer (thanks to @canewsin)

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ Currently supported widgets and classes include:
229229
- `ChangeNotifier`;
230230
- `WidgetsApp`, `Container`, `Column`, `Row`, `Center`;
231231
- `Padding`, `EdgeInsetsGeometry`, `EdgeInsets`, `Axis`, `Size`;
232+
- `Offset`, `Velocity`;
232233
- `MainAxisAlignment`, `MainAxisSize`, `CrossAxisAlignment`;
233234
- `AlignmentGeometry`, `Alignment`, `Constraints`, `BoxConstraints`;
234235
- `Color`, `ColorSwatch`, `Colors`, `FontWeight`, `FontStyle`;
@@ -245,6 +246,10 @@ Currently supported widgets and classes include:
245246
- `Image`, `ImageProvider`, `NetworkImage`, `MemoryImage`;
246247
- `ListView`, `ListTile`, `Spacer`;
247248
- `Navigator`, `NavigatorState`, `Builder`;
249+
- `PointerDeviceKind`, `HitTestBehavior`;
250+
- `GestureDetector`, `TapDownDetails`, `TapUpDetails`;
251+
- `LongPressStartDetails`, `LongPressMoveUpdateDetails`, `LongPressEndDetails`;
252+
- `DragStartDetails`, `DragUpdateDetails`, `DragEndDetails`, `DragDownDetails`;
248253

249254
Note that many of these have only partial support.
250255

lib/flutter_eval.dart

Lines changed: 56 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@ import 'package:flutter_eval/src/animation/curves.dart';
99
import 'package:flutter_eval/src/foundation.dart';
1010
import 'package:flutter_eval/src/foundation/change_notifier.dart';
1111
import 'package:flutter_eval/src/foundation/key.dart';
12+
import 'package:flutter_eval/src/gestures.dart';
13+
import 'package:flutter_eval/src/gestures/drag_details.dart';
14+
import 'package:flutter_eval/src/gestures/long_press.dart';
15+
import 'package:flutter_eval/src/gestures/tap.dart';
16+
import 'package:flutter_eval/src/gestures/velocity_tracker.dart';
1217
import 'package:flutter_eval/src/material.dart';
1318
import 'package:flutter_eval/src/material/app.dart';
1419
import 'package:flutter_eval/src/material/app_bar.dart';
@@ -44,9 +49,11 @@ import 'package:flutter_eval/src/rendering.dart';
4449
import 'package:flutter_eval/src/rendering/box.dart';
4550
import 'package:flutter_eval/src/rendering/flex.dart';
4651
import 'package:flutter_eval/src/rendering/object.dart';
52+
import 'package:flutter_eval/src/rendering/proxy_box.dart';
4753
import 'package:flutter_eval/src/sky_engine/ui/geometry.dart';
4854
import 'package:flutter_eval/src/sky_engine/ui/image.dart';
4955
import 'package:flutter_eval/src/sky_engine/ui/painting.dart';
56+
import 'package:flutter_eval/src/sky_engine/ui/pointer.dart';
5057
import 'package:flutter_eval/src/sky_engine/ui/text.dart';
5158
import 'package:flutter_eval/src/sky_engine/ui/ui.dart';
5259
import 'package:flutter_eval/src/widgets.dart';
@@ -55,6 +62,7 @@ import 'package:flutter_eval/src/widgets/basic.dart';
5562
import 'package:flutter_eval/src/widgets/container.dart';
5663
import 'package:flutter_eval/src/widgets/editable_text.dart';
5764
import 'package:flutter_eval/src/widgets/framework.dart';
65+
import 'package:flutter_eval/src/widgets/gesture_detector.dart';
5866
import 'package:flutter_eval/src/widgets/icon.dart';
5967
import 'package:flutter_eval/src/widgets/icon_data.dart';
6068
import 'package:flutter_eval/src/widgets/image.dart';
@@ -161,6 +169,18 @@ class FlutterEvalPlugin implements EvalPlugin {
161169
$NetworkImage.$declaration,
162170
$MemoryImage.$declaration,
163171
$ResizeImage.$declaration,
172+
$Offset.$declaration,
173+
$Velocity.$declaration,
174+
$GestureDetector.$declaration,
175+
$TapDownDetails.$declaration,
176+
$TapUpDetails.$declaration,
177+
$LongPressStartDetails.$declaration,
178+
$LongPressMoveUpdateDetails.$declaration,
179+
$LongPressEndDetails.$declaration,
180+
$DragStartDetails.$declaration,
181+
$DragUpdateDetails.$declaration,
182+
$DragEndDetails.$declaration,
183+
$DragDownDetails.$declaration,
164184
];
165185

166186
for (final cls in classes) {
@@ -179,6 +199,8 @@ class FlutterEvalPlugin implements EvalPlugin {
179199
registry.defineBridgeEnum($BorderStyle.$declaration);
180200
registry.defineBridgeEnum($BoxFit.$declaration);
181201
registry.defineBridgeEnum($FilterQuality.$declaration);
202+
registry.defineBridgeEnum($PointerDeviceKind.$declaration);
203+
registry.defineBridgeEnum($HitTestBehavior.$declaration);
182204

183205
registry.addSource(DartSource('dart:ui', dartUiSource));
184206

@@ -190,6 +212,12 @@ class FlutterEvalPlugin implements EvalPlugin {
190212
registry.addSource(
191213
DartSource('package:flutter/foundation.dart', foundationSource));
192214

215+
registry
216+
.addSource(DartSource('package:flutter/gestures.dart', gesturesSource));
217+
registry.addSource(DartSource(
218+
'package:flutter/src/widgets/gesture_detector.dart',
219+
gestureDetectorSource));
220+
193221
registry
194222
.addSource(DartSource('package:flutter/material.dart', materialSource));
195223
registry.addSource(DartSource(
@@ -219,6 +247,7 @@ class FlutterEvalPlugin implements EvalPlugin {
219247
runtime
220248
..registerBridgeFunc('dart:ui', 'Color.', $Color.$new)
221249
..registerBridgeFunc('dart:ui', 'Size.', $Size.$new)
250+
..registerBridgeFunc('dart:ui', 'Offset.', $Offset.$new)
222251
..registerBridgeFunc(
223252
'package:flutter/src/foundation/change_notifier.dart',
224253
'ChangeNotifier.',
@@ -387,12 +416,36 @@ class FlutterEvalPlugin implements EvalPlugin {
387416
'MemoryImage.', $MemoryImage.$new)
388417
..registerBridgeFunc('package:flutter/src/painting/image_provider.dart',
389418
'ResizeImage.', $ResizeImage.$new)
419+
..registerBridgeFunc('package:flutter/src/widgets/gesture_detector.dart',
420+
'GestureDetector.', $GestureDetector.$new)
421+
..registerBridgeFunc('package:flutter/src/gestures/tap.dart',
422+
'TapDownDetails.', $TapDownDetails.$new)
423+
..registerBridgeFunc('package:flutter/src/gestures/tap.dart',
424+
'TapUpDetails.', $TapUpDetails.$new)
425+
..registerBridgeFunc('package:flutter/src/gestures/long_press.dart',
426+
'LongPressStartDetails.', $LongPressStartDetails.$new)
427+
..registerBridgeFunc('package:flutter/src/gestures/long_press.dart',
428+
'LongPressMoveUpdateDetails.', $LongPressMoveUpdateDetails.$new)
429+
..registerBridgeFunc('package:flutter/src/gestures/long_press.dart',
430+
'LongPressEndDetails.', $LongPressEndDetails.$new)
431+
..registerBridgeFunc('package:flutter/src/gestures/drag_details.dart',
432+
'DragStartDetails.', $DragStartDetails.$new)
433+
..registerBridgeFunc('package:flutter/src/gestures/drag_details.dart',
434+
'DragUpdateDetails.', $DragUpdateDetails.$new)
435+
..registerBridgeFunc('package:flutter/src/gestures/drag_details.dart',
436+
'DragEndDetails.', $DragEndDetails.$new)
437+
..registerBridgeFunc('package:flutter/src/gestures/drag_details.dart',
438+
'DragDownDetails.', $DragDownDetails.$new)
439+
..registerBridgeFunc('package:flutter/src/gestures/velocity_tracker.dart',
440+
'Velocity.', $Velocity.$new)
390441
..registerBridgeEnumValues('dart:ui', 'FontWeight', $FontWeight.$values)
391442
..registerBridgeEnumValues('dart:ui', 'FontStyle', $FontStyle.$values)
392443
..registerBridgeEnumValues(
393444
'dart:ui', 'TextDirection', $TextDirection.$values)
394445
..registerBridgeEnumValues(
395446
'dart:ui', 'TextBaseline', $TextBaseline.$values)
447+
..registerBridgeEnumValues(
448+
'dart:ui', 'PointerDeviceKind', $PointerDeviceKind.$values)
396449
..registerBridgeEnumValues(
397450
'package:flutter/src/painting/basic_types.dart',
398451
'VerticalDirection',
@@ -410,6 +463,8 @@ class FlutterEvalPlugin implements EvalPlugin {
410463
..registerBridgeEnumValues('package:flutter/src/rendering/flex.dart',
411464
'MainAxisAlignment', $MainAxisAlignment.$values)
412465
..registerBridgeEnumValues('package:flutter/src/rendering/flex.dart',
413-
'CrossAxisAlignment', $CrossAxisAlignment.$values);
466+
'CrossAxisAlignment', $CrossAxisAlignment.$values)
467+
..registerBridgeEnumValues('package:flutter/src/rendering/proxy_box.dart',
468+
'HitTestBehavior', $HitTestBehavior.$values);
414469
}
415470
}

lib/gestures.dart

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
/// Bridge classes and wrappers for Flutter's gestures library
2+
library flutter_eval.gestures;
3+
4+
export 'src/gestures/drag_details.dart';
5+
export 'src/gestures/long_press.dart';
6+
export 'src/gestures/tap.dart';
7+
export 'src/gestures/velocity_tracker.dart';

lib/src/foundation/change_notifier.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'package:dart_eval/dart_eval.dart';
22
import 'package:dart_eval/dart_eval_bridge.dart';
33
import 'package:dart_eval/stdlib/core.dart';
4-
import 'package:flutter/cupertino.dart';
4+
import 'package:flutter/foundation.dart';
55

66
class $ChangeNotifier implements $Instance {
77
static const $type = BridgeTypeRef(BridgeTypeSpec(

lib/src/gestures.dart

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
const gesturesSource = '''
2+
// Copyright 2014 The Flutter Authors. All rights reserved.
3+
// Use of this source code is governed by a BSD-style license that can be
4+
// found in the LICENSE file.
5+
6+
/// The Flutter gesture recognizers.
7+
///
8+
/// To use, import `package:flutter/gestures.dart`.
9+
library gestures;
10+
11+
/* export 'src/gestures/arena.dart';
12+
export 'src/gestures/binding.dart';
13+
export 'src/gestures/constants.dart';
14+
export 'src/gestures/converter.dart';
15+
export 'src/gestures/debug.dart';
16+
export 'src/gestures/drag.dart'; */
17+
18+
export 'src/gestures/drag_details.dart';
19+
20+
/* export 'src/gestures/eager.dart';
21+
export 'src/gestures/events.dart';
22+
export 'src/gestures/force_press.dart';
23+
export 'src/gestures/gesture_settings.dart';
24+
export 'src/gestures/hit_test.dart'; */
25+
26+
export 'src/gestures/long_press.dart';
27+
28+
/* export 'src/gestures/lsq_solver.dart';
29+
export 'src/gestures/monodrag.dart';
30+
export 'src/gestures/multidrag.dart';
31+
export 'src/gestures/multitap.dart';
32+
export 'src/gestures/pointer_router.dart';
33+
export 'src/gestures/pointer_signal_resolver.dart';
34+
export 'src/gestures/recognizer.dart';
35+
export 'src/gestures/resampler.dart';
36+
export 'src/gestures/scale.dart';*/
37+
38+
export 'src/gestures/tap.dart';
39+
40+
// export 'src/gestures/tap_and_drag.dart';
41+
// export 'src/gestures/team.dart';
42+
43+
export 'src/gestures/velocity_tracker.dart';
44+
''';

0 commit comments

Comments
 (0)