|
@@ -52,7 +52,7 @@ class Checkbox extends StatefulWidget {
|
52
|
52
|
this.activeColor,
|
53
|
53
|
this.checkColor,
|
54
|
54
|
this.materialTapTargetSize,
|
55
|
|
- }) : assert(tristate != null),
|
|
55
|
+ }) : assert(tristate != null),
|
56
|
56
|
assert(tristate || value != null),
|
57
|
57
|
super(key: key);
|
58
|
58
|
|
|
@@ -133,7 +133,8 @@ class _CheckboxState extends State<Checkbox> with TickerProviderStateMixin {
|
133
|
133
|
Size size;
|
134
|
134
|
switch (widget.materialTapTargetSize ?? themeData.materialTapTargetSize) {
|
135
|
135
|
case MaterialTapTargetSize.padded:
|
136
|
|
- size = const Size(2 * kRadialReactionRadius + 8.0, 2 * kRadialReactionRadius + 8.0);
|
|
136
|
+ size = const Size(
|
|
137
|
+ 2 * kRadialReactionRadius + 8.0, 2 * kRadialReactionRadius + 8.0);
|
137
|
138
|
break;
|
138
|
139
|
case MaterialTapTargetSize.shrinkWrap:
|
139
|
140
|
size = const Size(2 * kRadialReactionRadius, 2 * kRadialReactionRadius);
|
|
@@ -145,7 +146,9 @@ class _CheckboxState extends State<Checkbox> with TickerProviderStateMixin {
|
145
|
146
|
tristate: widget.tristate,
|
146
|
147
|
activeColor: widget.activeColor ?? themeData.toggleableActiveColor,
|
147
|
148
|
checkColor: widget.checkColor ?? themeData.primaryColor,
|
148
|
|
- inactiveColor: widget.onChanged != null ? themeData.unselectedWidgetColor : themeData.disabledColor,
|
|
149
|
+ inactiveColor: widget.onChanged != null
|
|
150
|
+ ? themeData.unselectedWidgetColor
|
|
151
|
+ : themeData.disabledColor,
|
149
|
152
|
onChanged: widget.onChanged,
|
150
|
153
|
additionalConstraints: additionalConstraints,
|
151
|
154
|
vsync: this,
|
|
@@ -164,7 +167,7 @@ class _CheckboxRenderObjectWidget extends LeafRenderObjectWidget {
|
164
|
167
|
@required this.onChanged,
|
165
|
168
|
@required this.vsync,
|
166
|
169
|
@required this.additionalConstraints,
|
167
|
|
- }) : assert(tristate != null),
|
|
170
|
+ }) : assert(tristate != null),
|
168
|
171
|
assert(tristate || value != null),
|
169
|
172
|
assert(activeColor != null),
|
170
|
173
|
assert(inactiveColor != null),
|
|
@@ -182,15 +185,15 @@ class _CheckboxRenderObjectWidget extends LeafRenderObjectWidget {
|
182
|
185
|
|
183
|
186
|
@override
|
184
|
187
|
_RenderCheckbox createRenderObject(BuildContext context) => _RenderCheckbox(
|
185
|
|
- value: value,
|
186
|
|
- tristate: tristate,
|
187
|
|
- activeColor: activeColor,
|
188
|
|
- checkColor: checkColor,
|
189
|
|
- inactiveColor: inactiveColor,
|
190
|
|
- onChanged: onChanged,
|
191
|
|
- vsync: vsync,
|
192
|
|
- additionalConstraints: additionalConstraints,
|
193
|
|
- );
|
|
188
|
+ value: value,
|
|
189
|
+ tristate: tristate,
|
|
190
|
+ activeColor: activeColor,
|
|
191
|
+ checkColor: checkColor,
|
|
192
|
+ inactiveColor: inactiveColor,
|
|
193
|
+ onChanged: onChanged,
|
|
194
|
+ vsync: vsync,
|
|
195
|
+ additionalConstraints: additionalConstraints,
|
|
196
|
+ );
|
194
|
197
|
|
195
|
198
|
@override
|
196
|
199
|
void updateRenderObject(BuildContext context, _RenderCheckbox renderObject) {
|
|
@@ -220,17 +223,17 @@ class _RenderCheckbox extends RenderToggleable {
|
220
|
223
|
BoxConstraints additionalConstraints,
|
221
|
224
|
ValueChanged<bool> onChanged,
|
222
|
225
|
@required TickerProvider vsync,
|
223
|
|
- }): _oldValue = value,
|
224
|
|
- checkColor = checkColor,
|
|
226
|
+ }) : _oldValue = value,
|
|
227
|
+ checkColor = checkColor,
|
225
|
228
|
super(
|
226
|
|
- value: value,
|
227
|
|
- tristate: tristate,
|
228
|
|
- activeColor: activeColor,
|
229
|
|
- inactiveColor: inactiveColor,
|
230
|
|
- onChanged: onChanged,
|
231
|
|
- additionalConstraints: additionalConstraints,
|
232
|
|
- vsync: vsync,
|
233
|
|
- );
|
|
229
|
+ value: value,
|
|
230
|
+ tristate: tristate,
|
|
231
|
+ activeColor: activeColor,
|
|
232
|
+ inactiveColor: inactiveColor,
|
|
233
|
+ onChanged: onChanged,
|
|
234
|
+ additionalConstraints: additionalConstraints,
|
|
235
|
+ vsync: vsync,
|
|
236
|
+ );
|
234
|
237
|
|
235
|
238
|
bool _oldValue;
|
236
|
239
|
|
|
@@ -238,8 +241,7 @@ class _RenderCheckbox extends RenderToggleable {
|
238
|
241
|
|
239
|
242
|
@override
|
240
|
243
|
set value(bool newValue) {
|
241
|
|
- if (newValue == value)
|
242
|
|
- return;
|
|
244
|
+ if (newValue == value) return;
|
243
|
245
|
_oldValue = value;
|
244
|
246
|
super.value = newValue;
|
245
|
247
|
}
|
|
@@ -257,7 +259,8 @@ class _RenderCheckbox extends RenderToggleable {
|
257
|
259
|
RRect _outerRectAt(Offset origin, double t) {
|
258
|
260
|
final double inset = 1.0 - (t - 0.5).abs() * 2.0;
|
259
|
261
|
final double size = _kEdgeSize - inset * _kStrokeWidth;
|
260
|
|
- final Rect rect = Rect.fromLTWH(origin.dx + inset, origin.dy + inset, size, size);
|
|
262
|
+ final Rect rect =
|
|
263
|
+ Rect.fromLTWH(origin.dx + inset, origin.dy + inset, size, size);
|
261
|
264
|
return RRect.fromRectAndRadius(rect, _kEdgeRadius);
|
262
|
265
|
}
|
263
|
266
|
|
|
@@ -267,7 +270,9 @@ class _RenderCheckbox extends RenderToggleable {
|
267
|
270
|
// As t goes from 0.0 to 0.25, animate from the inactiveColor to activeColor.
|
268
|
271
|
return onChanged == null
|
269
|
272
|
? inactiveColor
|
270
|
|
- : (t >= 0.25 ? activeColor : Color.lerp(inactiveColor, activeColor, t * 4.0));
|
|
273
|
+ : (t >= 0.25
|
|
274
|
+ ? activeColor
|
|
275
|
+ : Color.lerp(inactiveColor, activeColor, t * 4.0));
|
271
|
276
|
}
|
272
|
277
|
|
273
|
278
|
// White stroke used to paint the check and dash.
|
|
@@ -282,7 +287,8 @@ class _RenderCheckbox extends RenderToggleable {
|
282
|
287
|
assert(t >= 0.0 && t <= 0.5);
|
283
|
288
|
final double size = outer.width;
|
284
|
289
|
// As t goes from 0.0 to 1.0, gradually fill the outer RRect.
|
285
|
|
- final RRect inner = outer.deflate(math.min(size / 2.0, _kStrokeWidth + size * t));
|
|
290
|
+ final RRect inner =
|
|
291
|
+ outer.deflate(math.min(size / 2.0, _kStrokeWidth + size * t));
|
286
|
292
|
canvas.drawDRRect(outer, inner, paint);
|
287
|
293
|
}
|
288
|
294
|
|
|
@@ -326,11 +332,13 @@ class _RenderCheckbox extends RenderToggleable {
|
326
|
332
|
final Canvas canvas = context.canvas;
|
327
|
333
|
paintRadialReaction(canvas, offset, size.center(Offset.zero));
|
328
|
334
|
|
329
|
|
- final Offset origin = offset + (size / 2.0 - const Size.square(_kEdgeSize) / 2.0);
|
|
335
|
+ final Offset origin =
|
|
336
|
+ offset + (size / 2.0 - const Size.square(_kEdgeSize) / 2.0);
|
330
|
337
|
final AnimationStatus status = position.status;
|
331
|
|
- final double tNormalized = status == AnimationStatus.forward || status == AnimationStatus.completed
|
332
|
|
- ? position.value
|
333
|
|
- : 1.0 - position.value;
|
|
338
|
+ final double tNormalized =
|
|
339
|
+ status == AnimationStatus.forward || status == AnimationStatus.completed
|
|
340
|
+ ? position.value
|
|
341
|
+ : 1.0 - position.value;
|
334
|
342
|
|
335
|
343
|
// Four cases: false to null, false to true, null to false, true to false
|
336
|
344
|
if (_oldValue == false || value == false) {
|
|
@@ -350,9 +358,10 @@ class _RenderCheckbox extends RenderToggleable {
|
350
|
358
|
else
|
351
|
359
|
_drawCheck(canvas, origin, tShrink, paint);
|
352
|
360
|
}
|
353
|
|
- } else { // Two cases: null to true, true to null
|
|
361
|
+ } else {
|
|
362
|
+ // Two cases: null to true, true to null
|
354
|
363
|
final RRect outer = _outerRectAt(origin, 1.0);
|
355
|
|
- final Paint paint = Paint() ..color = _colorAt(1.0);
|
|
364
|
+ final Paint paint = Paint()..color = _colorAt(1.0);
|
356
|
365
|
canvas.drawRRect(outer, paint);
|
357
|
366
|
|
358
|
367
|
_initStrokePaint(paint);
|