@@ -785,9 +785,29 @@ ConstraintId sId(int siblingIndexOffset) {
785785class _Align {
786786 ConstraintId ? id;
787787 _AlignType type;
788+ double ? _margin;
789+ double ? _goneMargin;
788790
789791 _Align (this .id, this .type);
790792
793+ _Align margin (double margin) {
794+ if (_margin != null || _goneMargin != null ) {
795+ _margin = margin;
796+ return this ;
797+ } else {
798+ return _Align (id, type).._margin = margin;
799+ }
800+ }
801+
802+ _Align goneMargin (double goneMargin) {
803+ if (_margin != null || _goneMargin != null ) {
804+ _goneMargin = goneMargin;
805+ return this ;
806+ } else {
807+ return _Align (id, type).._goneMargin = goneMargin;
808+ }
809+ }
810+
791811 @override
792812 bool operator == (Object other) =>
793813 identical (this , other) ||
@@ -836,8 +856,8 @@ class Constraint extends ConstraintDefine {
836856
837857 /// Both margin and goneMargin can be negative
838858 final bool percentageMargin;
839- final EdgeInsets margin;
840- final EdgeInsets goneMargin;
859+ EdgeInsets margin;
860+ EdgeInsets goneMargin;
841861
842862 /// These are the base constraints constraint on sibling id or parent
843863 /// The essence of constraints is alignment
@@ -1387,6 +1407,71 @@ class Constraint extends ConstraintDefine {
13871407 bottom = centerBottomRightTo! .bottom;
13881408 }
13891409
1410+ if (left != null ) {
1411+ if (left._margin != null ) {
1412+ margin = margin.add (EdgeInsets .only (
1413+ left: left._margin! ,
1414+ )) as EdgeInsets ;
1415+ }
1416+ if (left._goneMargin != null ) {
1417+ goneMargin = goneMargin.add (EdgeInsets .only (
1418+ left: left._goneMargin! ,
1419+ )) as EdgeInsets ;
1420+ }
1421+ }
1422+
1423+ if (top != null ) {
1424+ if (top._margin != null ) {
1425+ margin = margin.add (EdgeInsets .only (
1426+ top: top._margin! ,
1427+ )) as EdgeInsets ;
1428+ }
1429+ if (top._goneMargin != null ) {
1430+ goneMargin = goneMargin.add (EdgeInsets .only (
1431+ top: top._goneMargin! ,
1432+ )) as EdgeInsets ;
1433+ }
1434+ }
1435+
1436+ if (right != null ) {
1437+ if (right._margin != null ) {
1438+ margin = margin.add (EdgeInsets .only (
1439+ right: right._margin! ,
1440+ )) as EdgeInsets ;
1441+ }
1442+ if (right._goneMargin != null ) {
1443+ goneMargin = goneMargin.add (EdgeInsets .only (
1444+ right: right._goneMargin! ,
1445+ )) as EdgeInsets ;
1446+ }
1447+ }
1448+
1449+ if (bottom != null ) {
1450+ if (bottom._margin != null ) {
1451+ margin = margin.add (EdgeInsets .only (
1452+ bottom: bottom._margin! ,
1453+ )) as EdgeInsets ;
1454+ }
1455+ if (bottom._goneMargin != null ) {
1456+ goneMargin = goneMargin.add (EdgeInsets .only (
1457+ bottom: bottom._goneMargin! ,
1458+ )) as EdgeInsets ;
1459+ }
1460+ }
1461+
1462+ if (baseline != null ) {
1463+ if (baseline._margin != null ) {
1464+ margin = margin.add (EdgeInsets .only (
1465+ bottom: baseline._margin! ,
1466+ )) as EdgeInsets ;
1467+ }
1468+ if (baseline._goneMargin != null ) {
1469+ goneMargin = goneMargin.add (EdgeInsets .only (
1470+ bottom: baseline._goneMargin! ,
1471+ )) as EdgeInsets ;
1472+ }
1473+ }
1474+
13901475 /// Convert wrapper constraints finish
13911476
13921477 /// Constraint priority: matchParent > wrapper constraints > base constraints
0 commit comments