@@ -13,6 +13,7 @@ extension TranslateEffectExt on Widget {
13
13
Widget translate (
14
14
Offset offset, {
15
15
bool fractional = false ,
16
+ bool transformHitTests = false ,
16
17
Offset ? from,
17
18
}) {
18
19
return EffectWidget (
@@ -21,10 +22,12 @@ extension TranslateEffectExt on Widget {
21
22
: TranslateEffect (
22
23
offset: from,
23
24
fractional: fractional,
25
+ transformHitTests: transformHitTests,
24
26
),
25
27
end: TranslateEffect (
26
28
offset: offset,
27
29
fractional: fractional,
30
+ transformHitTests: transformHitTests,
28
31
),
29
32
child: this ,
30
33
);
@@ -36,6 +39,7 @@ extension TranslateEffectExt on Widget {
36
39
Widget translateX (
37
40
double x, {
38
41
bool fractional = false ,
42
+ bool transformHitTests = false ,
39
43
double ? from,
40
44
}) {
41
45
return EffectWidget (
@@ -44,10 +48,12 @@ extension TranslateEffectExt on Widget {
44
48
: TranslateEffect (
45
49
offset: Offset (from, 0 ),
46
50
fractional: fractional,
51
+ transformHitTests: transformHitTests,
47
52
),
48
53
end: TranslateEffect (
49
54
offset: Offset (x, 0 ),
50
55
fractional: fractional,
56
+ transformHitTests: transformHitTests,
51
57
),
52
58
child: this ,
53
59
);
@@ -59,6 +65,7 @@ extension TranslateEffectExt on Widget {
59
65
Widget translateY (
60
66
double y, {
61
67
bool fractional = false ,
68
+ bool transformHitTests = false ,
62
69
double ? from,
63
70
}) {
64
71
return EffectWidget (
@@ -67,10 +74,12 @@ extension TranslateEffectExt on Widget {
67
74
: TranslateEffect (
68
75
offset: Offset (0 , from),
69
76
fractional: fractional,
77
+ transformHitTests: transformHitTests,
70
78
),
71
79
end: TranslateEffect (
72
80
offset: Offset (0 , y),
73
81
fractional: fractional,
82
+ transformHitTests: transformHitTests,
74
83
),
75
84
child: this ,
76
85
);
@@ -84,6 +93,7 @@ extension TranslateEffectExt on Widget {
84
93
double x,
85
94
double y, {
86
95
bool fractional = false ,
96
+ bool transformHitTests = false ,
87
97
Offset ? from,
88
98
}) {
89
99
return EffectWidget (
@@ -92,42 +102,56 @@ extension TranslateEffectExt on Widget {
92
102
: TranslateEffect (
93
103
offset: from,
94
104
fractional: fractional,
105
+ transformHitTests: transformHitTests,
95
106
),
96
107
end: TranslateEffect (
97
108
offset: Offset (x, y),
98
109
fractional: fractional,
110
+ transformHitTests: transformHitTests,
99
111
),
100
112
child: this ,
101
113
);
102
114
}
103
115
104
116
/// Applies a [TranslateEffect] to a [Widget] with a default animation
105
117
/// to slide this widget in.
106
- Widget slideIn (Offset offset, {bool fractional = false }) {
118
+ Widget slideIn (
119
+ Offset offset, {
120
+ bool fractional = false ,
121
+ bool transformHitTests = false ,
122
+ }) {
107
123
return EffectWidget (
108
124
start: TranslateEffect (
109
125
offset: offset,
110
126
fractional: fractional,
127
+ transformHitTests: transformHitTests,
111
128
),
112
129
end: TranslateEffect (
113
130
offset: Offset .zero,
114
131
fractional: fractional,
132
+ transformHitTests: transformHitTests,
115
133
),
116
134
child: this ,
117
135
);
118
136
}
119
137
120
138
/// Applies a [TranslateEffect] to a [Widget] with a default animation
121
139
/// to slide this widget out.
122
- Widget slideOut (Offset offset, {bool fractional = false }) {
140
+ Widget slideOut (
141
+ Offset offset, {
142
+ bool fractional = false ,
143
+ bool transformHitTests = false ,
144
+ }) {
123
145
return EffectWidget (
124
146
start: TranslateEffect (
125
147
offset: Offset .zero,
126
148
fractional: fractional,
149
+ transformHitTests: transformHitTests,
127
150
),
128
151
end: TranslateEffect (
129
152
offset: offset,
130
153
fractional: fractional,
154
+ transformHitTests: transformHitTests,
131
155
),
132
156
child: this ,
133
157
);
@@ -138,87 +162,103 @@ extension TranslateEffectExt on Widget {
138
162
Widget slideInFromLeft ({
139
163
double ? value,
140
164
bool fractional = false ,
165
+ bool transformHitTests = false ,
141
166
}) =>
142
167
slideIn (
143
168
Offset (value ?? (fractional ? - 1 : - _kDefaultSlideOffset), 0 ),
144
169
fractional: fractional,
170
+ transformHitTests: transformHitTests,
145
171
);
146
172
147
173
/// Applies a [TranslateEffect] to a [Widget] with a default animation
148
174
/// to slide this widget in from the right.
149
175
Widget slideInFromRight ({
150
176
double ? value,
151
177
bool fractional = false ,
178
+ bool transformHitTests = false ,
152
179
}) =>
153
180
slideIn (
154
181
Offset (value ?? (fractional ? 1 : _kDefaultSlideOffset), 0 ),
155
182
fractional: fractional,
183
+ transformHitTests: transformHitTests,
156
184
);
157
185
158
186
/// Applies a [TranslateEffect] to a [Widget] with a default animation
159
187
/// to slide this widget in from the top.
160
188
Widget slideInFromTop ({
161
189
double ? value,
162
190
bool fractional = false ,
191
+ bool transformHitTests = false ,
163
192
}) =>
164
193
slideIn (
165
194
Offset (0 , value ?? (fractional ? - 1 : - _kDefaultSlideOffset)),
166
195
fractional: fractional,
196
+ transformHitTests: transformHitTests,
167
197
);
168
198
169
199
/// Applies a [TranslateEffect] to a [Widget] with a default animation
170
200
/// to slide this widget in from the bottom.
171
201
Widget slideInFromBottom ({
172
202
double ? value,
173
203
bool fractional = false ,
204
+ bool transformHitTests = false ,
174
205
}) =>
175
206
slideIn (
176
207
Offset (0 , value ?? (fractional ? 1 : _kDefaultSlideOffset)),
177
208
fractional: fractional,
209
+ transformHitTests: transformHitTests,
178
210
);
179
211
180
212
/// Applies a [TranslateEffect] to a [Widget] with a default animation
181
213
/// to slide this widget out to the left.
182
214
Widget slideOutToLeft ({
183
215
double ? value,
184
216
bool fractional = false ,
217
+ bool transformHitTests = false ,
185
218
}) =>
186
219
slideOut (
187
220
Offset (value ?? (fractional ? - 1 : - _kDefaultSlideOffset), 0 ),
188
221
fractional: fractional,
222
+ transformHitTests: transformHitTests,
189
223
);
190
224
191
225
/// Applies a [TranslateEffect] to a [Widget] with a default animation
192
226
/// to slide this widget out to the right.
193
227
Widget slideOutToRight ({
194
228
double ? value,
195
229
bool fractional = false ,
230
+ bool transformHitTests = false ,
196
231
}) =>
197
232
slideOut (
198
233
Offset (value ?? (fractional ? 1 : _kDefaultSlideOffset), 0 ),
199
234
fractional: fractional,
235
+ transformHitTests: transformHitTests,
200
236
);
201
237
202
238
/// Applies a [TranslateEffect] to a [Widget] with a default animation
203
239
/// to slide this widget out to the top.
204
240
Widget slideOutToTop ({
205
241
double ? value,
206
242
bool fractional = false ,
243
+ bool transformHitTests = false ,
207
244
}) =>
208
245
slideOut (
209
246
Offset (0 , value ?? (fractional ? - 1 : - _kDefaultSlideOffset)),
210
247
fractional: fractional,
248
+ transformHitTests: transformHitTests,
211
249
);
212
250
213
251
/// Applies a [TranslateEffect] to a [Widget] with a default animation
214
252
/// to slide this widget out to the bottom.
215
253
Widget slideOutToBottom ({
216
254
double ? value,
217
255
bool fractional = false ,
256
+ bool transformHitTests = false ,
218
257
}) =>
219
258
slideOut (
220
259
Offset (0 , value ?? (fractional ? 1 : _kDefaultSlideOffset)),
221
260
fractional: fractional,
261
+ transformHitTests: transformHitTests,
222
262
);
223
263
}
224
264
@@ -231,15 +271,22 @@ class TranslateEffect extends Effect {
231
271
/// of the [Widget] 's size. If false, the [offset] is a fixed amount.
232
272
final bool fractional;
233
273
274
+ /// Whether the [Widget] should be hit tested.
275
+ final bool transformHitTests;
276
+
234
277
/// Creates a [TranslateEffect] with the given [offset] and [fractional] .
235
278
TranslateEffect ({
236
279
this .offset = Offset .zero,
237
280
this .fractional = false ,
281
+ this .transformHitTests = false ,
238
282
});
239
283
240
284
@override
241
285
TranslateEffect lerp (covariant TranslateEffect other, double value) {
242
286
return TranslateEffect (
287
+ fractional: other.fractional,
288
+ transformHitTests:
289
+ value < 0.5 ? transformHitTests : other.transformHitTests,
243
290
offset: Offset .lerp (offset, other.offset, value) ?? Offset .zero,
244
291
);
245
292
}
@@ -249,11 +296,13 @@ class TranslateEffect extends Effect {
249
296
if (fractional) {
250
297
return FractionalTranslation (
251
298
translation: offset,
299
+ transformHitTests: transformHitTests,
252
300
child: child,
253
301
);
254
302
} else {
255
303
return Transform .translate (
256
304
offset: offset,
305
+ transformHitTests: transformHitTests,
257
306
child: child,
258
307
);
259
308
}
0 commit comments