Skip to content

Commit 86c2225

Browse files
committed
enhance margin and goneMargin
1 parent 8ce0645 commit 86c2225

File tree

1 file changed

+87
-2
lines changed

1 file changed

+87
-2
lines changed

lib/src/constraint_layout.dart

Lines changed: 87 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -785,9 +785,29 @@ ConstraintId sId(int siblingIndexOffset) {
785785
class _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

Comments
 (0)