@@ -391,6 +391,77 @@ void main() {
391391 expect (_getCheckboxMaterial (tester), paints..path (color: localThemeFillColor));
392392 expect (_getCheckboxMaterial (tester), paints..path (color: localThemeFillColor)..path (color: localThemeCheckColor));
393393 });
394+
395+ test ('CheckboxThemeData lerp with null parameters' , () {
396+ final CheckboxThemeData lerped = CheckboxThemeData .lerp (null , null , 0.25 );
397+
398+ expect (lerped.mouseCursor, null );
399+ expect (lerped.fillColor, null );
400+ expect (lerped.checkColor, null );
401+ expect (lerped.overlayColor, null );
402+ expect (lerped.splashRadius, null );
403+ expect (lerped.materialTapTargetSize, null );
404+ expect (lerped.visualDensity, null );
405+ expect (lerped.shape, null );
406+ expect (lerped.side, null );
407+ });
408+
409+ test ('CheckboxThemeData lerp from populated to null parameters' , () {
410+ final CheckboxThemeData theme = CheckboxThemeData (
411+ fillColor: MaterialStateProperty .all (const Color (0xfffffff0 )),
412+ checkColor: MaterialStateProperty .all (const Color (0xfffffff1 )),
413+ overlayColor: MaterialStateProperty .all (const Color (0xfffffff2 )),
414+ splashRadius: 3.0 ,
415+ materialTapTargetSize: MaterialTapTargetSize .shrinkWrap,
416+ visualDensity: const VisualDensity (vertical: 1.0 , horizontal: 1.0 ),
417+ shape: const RoundedRectangleBorder (borderRadius: BorderRadius .all (Radius .circular (4.0 ))),
418+ side: const BorderSide (width: 4.0 ),
419+ );
420+ final CheckboxThemeData lerped = CheckboxThemeData .lerp (theme, null , 0.5 );
421+
422+ expect (lerped.fillColor! .resolve (< MaterialState > {}), const Color (0x80fffff0 ));
423+ expect (lerped.checkColor! .resolve (< MaterialState > {}), const Color (0x80fffff1 ));
424+ expect (lerped.overlayColor! .resolve (< MaterialState > {}), const Color (0x80fffff2 ));
425+ expect (lerped.splashRadius, 1.5 );
426+ expect (lerped.materialTapTargetSize, null );
427+ expect (lerped.visualDensity, null );
428+ expect (lerped.shape, const RoundedRectangleBorder (borderRadius: BorderRadius .all (Radius .circular (2.0 ))));
429+ // Returns null if either lerp value is null.
430+ expect (lerped.side, null );
431+ });
432+
433+ test ('CheckboxThemeData lerp from populated parameters' , () {
434+ final CheckboxThemeData themeA = CheckboxThemeData (
435+ fillColor: MaterialStateProperty .all (const Color (0xfffffff0 )),
436+ checkColor: MaterialStateProperty .all (const Color (0xfffffff1 )),
437+ overlayColor: MaterialStateProperty .all (const Color (0xfffffff2 )),
438+ splashRadius: 3.0 ,
439+ materialTapTargetSize: MaterialTapTargetSize .shrinkWrap,
440+ visualDensity: const VisualDensity (vertical: 1.0 , horizontal: 1.0 ),
441+ shape: const RoundedRectangleBorder (borderRadius: BorderRadius .all (Radius .circular (4.0 ))),
442+ side: const BorderSide (width: 4.0 ),
443+ );
444+ final CheckboxThemeData themeB = CheckboxThemeData (
445+ fillColor: MaterialStateProperty .all (const Color (0xfffffff3 )),
446+ checkColor: MaterialStateProperty .all (const Color (0xfffffff4 )),
447+ overlayColor: MaterialStateProperty .all (const Color (0xfffffff5 )),
448+ splashRadius: 9.0 ,
449+ materialTapTargetSize: MaterialTapTargetSize .shrinkWrap,
450+ visualDensity: const VisualDensity (vertical: 2.0 , horizontal: 2.0 ),
451+ shape: const RoundedRectangleBorder (borderRadius: BorderRadius .all (Radius .circular (1.0 ))),
452+ side: const BorderSide (width: 3.0 ),
453+ );
454+ final CheckboxThemeData lerped = CheckboxThemeData .lerp (themeA, themeB, 0.5 );
455+
456+ expect (lerped.fillColor! .resolve (< MaterialState > {}), const Color (0xfffffff1 ));
457+ expect (lerped.checkColor! .resolve (< MaterialState > {}), const Color (0xfffffff2 ));
458+ expect (lerped.overlayColor! .resolve (< MaterialState > {}), const Color (0xfffffff3 ));
459+ expect (lerped.splashRadius, 6 );
460+ expect (lerped.materialTapTargetSize, MaterialTapTargetSize .shrinkWrap);
461+ expect (lerped.visualDensity, const VisualDensity (vertical: 2.0 , horizontal: 2.0 ));
462+ expect (lerped.shape, const RoundedRectangleBorder (borderRadius: BorderRadius .all (Radius .circular (2.5 ))));
463+ expect (lerped.side, const BorderSide (width: 3.5 ));
464+ });
394465}
395466
396467Future <void > _pointGestureToCheckbox (WidgetTester tester) async {
0 commit comments