forked from bernaferrari/FigmaToCode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathflutterPadding.ts
More file actions
60 lines (50 loc) · 1.66 KB
/
Copy pathflutterPadding.ts
File metadata and controls
60 lines (50 loc) · 1.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import { AltSceneNode } from "../../altNodes/altMixins";
import { numToAutoFixed } from "../../common/numToAutoFixed";
import { commonPadding } from "../../common/commonPadding";
// Add padding if necessary!
// This must happen before Stack or after the Positioned, but not before.
export const flutterPadding = (node: AltSceneNode): string => {
if (!("layoutMode" in node)) {
return "";
}
const padding = commonPadding(node);
if (!padding) {
return "";
}
if ("all" in padding) {
return `padding: const EdgeInsets.all(${numToAutoFixed(padding.all)}), `;
}
// horizontal and vertical, as the default AutoLayout
if (
padding.horizontal + padding.vertical !== 0 &&
padding.top + padding.bottom + padding.left + padding.right === 0
) {
const propHorizontalPadding =
padding.horizontal > 0
? `horizontal: ${numToAutoFixed(padding.horizontal)}, `
: "";
const propVerticalPadding =
padding.vertical > 0
? `vertical: ${numToAutoFixed(padding.vertical)}, `
: "";
return `padding: const EdgeInsets.symmetric(${propHorizontalPadding}${propVerticalPadding}), `;
}
let comp = "";
// if left and right exists, verify if they are the same after [pxToLayoutSize] conversion.
if (padding.left) {
comp += `left: ${numToAutoFixed(padding.left)}, `;
}
if (padding.right) {
comp += `right: ${numToAutoFixed(padding.right)}, `;
}
if (padding.top) {
comp += `top: ${numToAutoFixed(padding.top)}, `;
}
if (padding.bottom) {
comp += `bottom: ${numToAutoFixed(padding.bottom)}, `;
}
if (comp !== "") {
return `padding: const EdgeInsets.only(${comp}), `;
}
return "";
};