Skip to content

Commit af295c2

Browse files
committed
refactor(dock): 使用 const IconData 替代 int codePoint 修复 tree-shake-icons 构建错误
1 parent 9ffef73 commit af295c2

2 files changed

Lines changed: 65 additions & 70 deletions

File tree

lib/models/dock_item_config.dart

Lines changed: 64 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -4,88 +4,83 @@ import 'package:bugaoshan/utils/constants.dart';
44

55
class DockItemConfig {
66
final String id;
7-
final int iconCodePoint;
8-
final int selectedIconCodePoint;
7+
final IconData icon;
8+
final IconData selectedIcon;
99

1010
const DockItemConfig({
1111
required this.id,
12-
required this.iconCodePoint,
13-
required this.selectedIconCodePoint,
12+
required this.icon,
13+
required this.selectedIcon,
1414
});
15-
16-
IconData get icon => IconData(iconCodePoint, fontFamily: 'MaterialIcons');
17-
IconData get selectedIcon =>
18-
IconData(selectedIconCodePoint, fontFamily: 'MaterialIcons');
19-
2015
}
2116

22-
List<DockItemConfig> allDockItems() => [
23-
DockItemConfig(
24-
id: dockIdCourse,
25-
iconCodePoint: Icons.menu_book_outlined.codePoint,
26-
selectedIconCodePoint: Icons.menu_book.codePoint,
27-
),
28-
DockItemConfig(
29-
id: dockIdCampus,
30-
iconCodePoint: Icons.school_outlined.codePoint,
31-
selectedIconCodePoint: Icons.school.codePoint,
32-
),
33-
DockItemConfig(
34-
id: dockIdProfile,
35-
iconCodePoint: Icons.person_outlined.codePoint,
36-
selectedIconCodePoint: Icons.person.codePoint,
37-
),
38-
DockItemConfig(
39-
id: dockIdGrades,
40-
iconCodePoint: Icons.bar_chart_outlined.codePoint,
41-
selectedIconCodePoint: Icons.bar_chart.codePoint,
42-
),
43-
DockItemConfig(
44-
id: dockIdCcyl,
45-
iconCodePoint: Icons.event_outlined.codePoint,
46-
selectedIconCodePoint: Icons.event.codePoint,
47-
),
48-
DockItemConfig(
49-
id: dockIdPlanCompletion,
50-
iconCodePoint: Icons.assignment_turned_in_outlined.codePoint,
51-
selectedIconCodePoint: Icons.assignment_turned_in.codePoint,
52-
),
53-
DockItemConfig(
54-
id: dockIdTrainProgram,
55-
iconCodePoint: Icons.school_outlined.codePoint,
56-
selectedIconCodePoint: Icons.school.codePoint,
57-
),
58-
DockItemConfig(
59-
id: dockIdClassroom,
60-
iconCodePoint: Icons.meeting_room_outlined.codePoint,
61-
selectedIconCodePoint: Icons.meeting_room.codePoint,
62-
),
63-
DockItemConfig(
64-
id: dockIdNetworkDevice,
65-
iconCodePoint: Icons.router_outlined.codePoint,
66-
selectedIconCodePoint: Icons.router.codePoint,
67-
),
68-
DockItemConfig(
69-
id: dockIdBalanceQuery,
70-
iconCodePoint: Icons.account_balance_wallet_outlined.codePoint,
71-
selectedIconCodePoint: Icons.account_balance_wallet.codePoint,
72-
),
73-
DockItemConfig(
74-
id: dockIdAcademicCalendar,
75-
iconCodePoint: Icons.calendar_month_outlined.codePoint,
76-
selectedIconCodePoint: Icons.calendar_month.codePoint,
77-
),
78-
];
17+
const allDockItems = [
18+
DockItemConfig(
19+
id: dockIdCourse,
20+
icon: Icons.menu_book_outlined,
21+
selectedIcon: Icons.menu_book,
22+
),
23+
DockItemConfig(
24+
id: dockIdCampus,
25+
icon: Icons.school_outlined,
26+
selectedIcon: Icons.school,
27+
),
28+
DockItemConfig(
29+
id: dockIdProfile,
30+
icon: Icons.person_outlined,
31+
selectedIcon: Icons.person,
32+
),
33+
DockItemConfig(
34+
id: dockIdGrades,
35+
icon: Icons.bar_chart_outlined,
36+
selectedIcon: Icons.bar_chart,
37+
),
38+
DockItemConfig(
39+
id: dockIdCcyl,
40+
icon: Icons.event_outlined,
41+
selectedIcon: Icons.event,
42+
),
43+
DockItemConfig(
44+
id: dockIdPlanCompletion,
45+
icon: Icons.assignment_turned_in_outlined,
46+
selectedIcon: Icons.assignment_turned_in,
47+
),
48+
DockItemConfig(
49+
id: dockIdTrainProgram,
50+
icon: Icons.school_outlined,
51+
selectedIcon: Icons.school,
52+
),
53+
DockItemConfig(
54+
id: dockIdClassroom,
55+
icon: Icons.meeting_room_outlined,
56+
selectedIcon: Icons.meeting_room,
57+
),
58+
DockItemConfig(
59+
id: dockIdNetworkDevice,
60+
icon: Icons.router_outlined,
61+
selectedIcon: Icons.router,
62+
),
63+
DockItemConfig(
64+
id: dockIdBalanceQuery,
65+
icon: Icons.account_balance_wallet_outlined,
66+
selectedIcon: Icons.account_balance_wallet,
67+
),
68+
DockItemConfig(
69+
id: dockIdAcademicCalendar,
70+
icon: Icons.calendar_month_outlined,
71+
selectedIcon: Icons.calendar_month,
72+
),
73+
];
7974

8075
/// ID → DockItemConfig lookup map.
81-
final Map<String, DockItemConfig> _dockConfigMap = {
82-
for (final item in allDockItems()) item.id: item,
76+
final Map<String, DockItemConfig> dockConfigMap = {
77+
for (final item in allDockItems) item.id: item,
8378
};
8479

8580
/// Returns the [DockItemConfig] for [id].
8681
/// Falls back to [dockIdProfile] if [id] is not found.
8782
DockItemConfig dockConfigById(String id) =>
88-
_dockConfigMap[id] ?? _dockConfigMap[dockIdProfile]!;
83+
dockConfigMap[id] ?? dockConfigMap[dockIdProfile]!;
8984

9085
String dockLabel(String id, AppLocalizations l10n) => switch (id) {
9186
dockIdCourse => l10n.dockLabelCourse,

lib/pages/settings/set_dock_page.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class _SetDockPageState extends State<SetDockPage> {
2323
super.initState();
2424
_appConfig = getIt<AppConfigProvider>();
2525
_visibleIds = List<String>.from(_appConfig.visibleDockIds.value);
26-
_allItems = allDockItems();
26+
_allItems = List<DockItemConfig>.from(allDockItems);
2727
}
2828

2929
bool _isVisible(String id) => _visibleIds.contains(id);

0 commit comments

Comments
 (0)