Skip to content

Commit f7d58ba

Browse files
committed
fix: Dart enum doesn't support pure number keyword
1 parent 4d02626 commit f7d58ba

4 files changed

Lines changed: 53 additions & 23 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "flutter-iconfont-cli",
3-
"version": "1.0.0",
3+
"version": "1.0.1",
44
"main": "index.js",
55
"keywords": [
66
"iconfont",

scripts/config/normal.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"symbol_url": "http://at.alicdn.com/t/font_1373348_ghk94ooopqr.js",
2+
"symbol_url": "http://at.alicdn.com/t/font_1373348_do9g97fppkg.js",
33
"save_dir": "./snapshots",
44
"trim_icon_prefix": "icon",
55
"default_icon_size": 14

snapshots/icon_font.dart

Lines changed: 45 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import 'package:flutter/cupertino.dart';
22
import 'package:flutter_svg/svg.dart';
33

44
enum IconNames {
5-
alipay, user, setup
5+
_123, setup, user, alipay
66
}
77

88
/**
@@ -30,14 +30,17 @@ class IconFont extends StatelessWidget {
3030

3131
IconFont(dynamic iconName, { this.size = 14, this.color, this.colors }) {
3232
switch (iconName) {
33-
case 'alipay':
34-
iconName = IconNames.alipay;
33+
case '_123':
34+
iconName = IconNames._123;
35+
break;
36+
case 'setup':
37+
iconName = IconNames.setup;
3538
break;
3639
case 'user':
3740
iconName = IconNames.user;
3841
break;
39-
case 'setup':
40-
iconName = IconNames.setup;
42+
case 'alipay':
43+
iconName = IconNames.alipay;
4144
break;
4245

4346
}
@@ -62,30 +65,24 @@ class IconFont extends StatelessWidget {
6265
String svgXml;
6366

6467
switch (this.name) {
65-
case IconNames.alipay:
68+
case IconNames._123:
6669
svgXml = '''
6770
<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
6871
<path
69-
d="M192 692.736c0-69.632 51.2-106.496 88.064-111.104 111.104-18.432 264.192 74.24 264.192 74.24-69.632 88.064-166.912 134.144-241.152 134.144-65.024-4.608-111.104-41.472-111.104-97.28z"
70-
fill="''' + getColor(0, color, colors, '#5B8BD4') + '''"
72+
d="M512 87.04c234.7008 0 424.96 190.2592 424.96 424.96s-190.2592 424.96-424.96 424.96-424.96-190.2592-424.96-424.96 190.2592-424.96 424.96-424.96z m0 112.64c-172.4928 0-312.32 139.8272-312.32 312.32s139.8272 312.32 312.32 312.32 312.32-139.8272 312.32-312.32-139.8272-312.32-312.32-312.32z"
73+
fill="''' + getColor(0, color, colors, '#47B5FF') + '''"
7174
/>
7275
<path
73-
d="M979.456 729.6c-13.824-4.608-329.216-101.888-319.488-111.104 46.592-55.808 78.848-185.344 78.848-185.344v-27.648h-185.344V335.872h226.816v-41.472h-226.816V192.512H460.8v97.28H257.024v41.472H460.8v69.632H298.496v27.648h333.824c0 13.824-23.04 106.496-46.08 148.48-4.608-9.216-153.088-60.416-236.544-65.024-88.064 4.608-157.696 32.256-189.952 97.28-46.592 120.32 27.648 241.152 194.56 241.152 27.648 0 162.304-13.824 264.192-153.088 27.648 13.824 185.344 92.672 282.624 143.872-92.672 111.104-231.936 180.736-389.12 180.736-280.576 1.024-508.928-226.304-509.44-506.88v-3.072C1.024 231.424 227.84 3.072 508.928 2.56h3.072c280.576-1.024 508.928 226.304 509.44 506.88v3.072c4.608 82.944-13.824 152.576-41.984 217.088z"
74-
fill="''' + getColor(1, color, colors, '#5B8BD4') + '''"
76+
d="M455.68 307.2h112.64v307.2H455.68z"
77+
fill="''' + getColor(1, color, colors, '#47B5FF') + '''"
7578
/>
76-
</svg>
77-
''';
78-
break;
79-
case IconNames.user:
80-
svgXml = '''
81-
<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
8279
<path
83-
d="M518.07603918 6.737455c-174.95658274 0-316.73174462 141.77516188-316.73174465 316.73174464 0 82.95355218 32.42729765 159.11999552 84.46179858 214.92511241 16.59071043 18.09895683 35.44379047 33.93554407 55.80511691 47.5097617 50.5262545 33.93554407 111.61023382 53.54274731 176.46482916 53.5427473s126.69269785-19.60720323 176.46482915-53.5427473c20.36132644-13.57421762 39.21440646-29.41080486 55.80511691-47.5097617C803.13460934 482.58919514 834.80778381 406.42275179 834.80778381 323.46919964c0-174.95658274-141.77516188-316.73174462-316.73174463-316.73174464z m166.66122752 501.491929c-22.62369604 20.36132644-49.01800811 36.95203687-77.67468975 47.50976169-27.90255844 10.55772482-58.06748652 16.59071043-88.98653777 16.59071044s-61.83810252-6.03298562-88.98653779-16.59071044c-28.65668166-11.31184801-55.0509937-27.14843525-77.67468975-47.50976169C300.88855716 462.98199189 269.21538268 396.61915017 269.21538268 323.46919964c0-137.25042267 111.61023382-248.86065649 248.8606565-248.86065651s248.86065649 111.61023382 248.86065648 248.86065651c0 73.14995053-31.67317446 139.51279228-82.19942896 184.76018436z"
84-
fill="''' + getColor(0, color, colors, '#263238') + '''"
80+
d="M734.48448 498.57024l-19.5584 110.9248-302.53056-53.34528 19.5584-110.9248z"
81+
fill="''' + getColor(2, color, colors, '#47B5FF') + '''"
8582
/>
8683
<path
87-
d="M341.61121002 586.65819695C205.11491054 652.26691548 110.84951037 791.77970775 110.84951037 953.16207287c0 18.85308003-15.08246403 33.93554407-33.93554406 33.93554407s-33.93554407-15.08246403-33.93554409-33.93554407c0-177.97307556 98.03601619-332.56833185 242.82767089-414.76776082 16.59071043 18.09895683 35.44379047 33.93554407 55.80511691 48.2638849zM993.17365612 953.16207287c0 18.85308003-15.08246403 33.93554407-33.93554408 33.93554407s-33.93554407-15.08246403-33.93554405-33.93554407c0-161.38236511-94.26540019-300.8951574-230.76169966-366.50387592 20.36132644-13.57421762 39.21440646-29.41080486 55.80511691-47.5097617 144.79165469 81.44530576 242.82767087 236.04056206 242.82767088 414.01363762z"
88-
fill="''' + getColor(1, color, colors, '#15BBDF') + '''"
84+
d="M455.68 449.408l112.64 19.86048v114.37568l-112.64-19.86048V449.408z"
85+
fill="''' + getColor(3, color, colors, '#067EDF') + '''"
8986
/>
9087
</svg>
9188
''';
@@ -140,6 +137,34 @@ class IconFont extends StatelessWidget {
140137
</svg>
141138
''';
142139
break;
140+
case IconNames.user:
141+
svgXml = '''
142+
<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
143+
<path
144+
d="M518.07603918 6.737455c-174.95658274 0-316.73174462 141.77516188-316.73174465 316.73174464 0 82.95355218 32.42729765 159.11999552 84.46179858 214.92511241 16.59071043 18.09895683 35.44379047 33.93554407 55.80511691 47.5097617 50.5262545 33.93554407 111.61023382 53.54274731 176.46482916 53.5427473s126.69269785-19.60720323 176.46482915-53.5427473c20.36132644-13.57421762 39.21440646-29.41080486 55.80511691-47.5097617C803.13460934 482.58919514 834.80778381 406.42275179 834.80778381 323.46919964c0-174.95658274-141.77516188-316.73174462-316.73174463-316.73174464z m166.66122752 501.491929c-22.62369604 20.36132644-49.01800811 36.95203687-77.67468975 47.50976169-27.90255844 10.55772482-58.06748652 16.59071043-88.98653777 16.59071044s-61.83810252-6.03298562-88.98653779-16.59071044c-28.65668166-11.31184801-55.0509937-27.14843525-77.67468975-47.50976169C300.88855716 462.98199189 269.21538268 396.61915017 269.21538268 323.46919964c0-137.25042267 111.61023382-248.86065649 248.8606565-248.86065651s248.86065649 111.61023382 248.86065648 248.86065651c0 73.14995053-31.67317446 139.51279228-82.19942896 184.76018436z"
145+
fill="''' + getColor(0, color, colors, '#263238') + '''"
146+
/>
147+
<path
148+
d="M341.61121002 586.65819695C205.11491054 652.26691548 110.84951037 791.77970775 110.84951037 953.16207287c0 18.85308003-15.08246403 33.93554407-33.93554406 33.93554407s-33.93554407-15.08246403-33.93554409-33.93554407c0-177.97307556 98.03601619-332.56833185 242.82767089-414.76776082 16.59071043 18.09895683 35.44379047 33.93554407 55.80511691 48.2638849zM993.17365612 953.16207287c0 18.85308003-15.08246403 33.93554407-33.93554408 33.93554407s-33.93554407-15.08246403-33.93554405-33.93554407c0-161.38236511-94.26540019-300.8951574-230.76169966-366.50387592 20.36132644-13.57421762 39.21440646-29.41080486 55.80511691-47.5097617 144.79165469 81.44530576 242.82767087 236.04056206 242.82767088 414.01363762z"
149+
fill="''' + getColor(1, color, colors, '#15BBDF') + '''"
150+
/>
151+
</svg>
152+
''';
153+
break;
154+
case IconNames.alipay:
155+
svgXml = '''
156+
<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
157+
<path
158+
d="M212 676.88888889c0-65.28 48-99.84 82.56-104.16 104.16-17.28 247.68 69.6 247.68 69.6-65.28 82.56-156.48 125.76-226.08 125.76-60.96-4.32-104.16-38.88-104.16-91.2z"
159+
fill="''' + getColor(0, color, colors, '#5B8BD4') + '''"
160+
/>
161+
<path
162+
d="M950.24 711.44888889c-12.96-4.32-308.64-95.52-299.52-104.16 43.68-52.32 73.92-173.76 73.92-173.76v-25.92h-173.76V342.32888889h212.64v-38.88h-212.64V207.92888889H464v91.2H272.96v38.88H464v65.28H311.84v25.92h312.96c0 12.96-21.6 99.84-43.2 139.2-4.32-8.64-143.52-56.64-221.76-60.96-82.56 4.32-147.84 30.24-178.08 91.2-43.68 112.8 25.92 226.08 182.4 226.08 25.92 0 152.16-12.96 247.68-143.52 25.92 12.96 173.76 86.88 264.96 134.88-86.88 104.16-217.44 169.44-364.8 169.44-263.04 0.96-477.12-212.16-477.6-475.2v-2.88C32.96 244.40888889 245.6 30.32888889 509.12 29.84888889h2.88c263.04-0.96 477.12 212.16 477.6 475.2v2.88c4.32 77.76-12.96 143.04-39.36 203.52z"
163+
fill="''' + getColor(1, color, colors, '#5B8BD4') + '''"
164+
/>
165+
</svg>
166+
''';
167+
break;
143168

144169
}
145170

src/libs/generateComponent.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,15 @@ export const generateComponent = (data: XmlData, config: Config) => {
2828

2929
data.svg.symbol.forEach((item) => {
3030
const iconId = item.$.id;
31-
const iconIdAfterTrim = snakeCase(config.trim_icon_prefix
31+
let iconIdAfterTrim = snakeCase(config.trim_icon_prefix
3232
? iconId.replace(new RegExp(`^${config.trim_icon_prefix}(.+?)$`), '$1')
3333
: iconId);
3434

35+
// dart enum doesn't support keyword with digit prefix
36+
if (/^\d/.test(iconIdAfterTrim)) {
37+
iconIdAfterTrim = '_' + iconIdAfterTrim;
38+
}
39+
3540
names.push(iconIdAfterTrim);
3641

3742
cases += `${whitespace(6)}case IconNames.${iconIdAfterTrim}:\n`;

0 commit comments

Comments
 (0)