Skip to content

Commit 1011ff9

Browse files
committed
feat(sidebar): 侧边栏 Logo 旁新增 FluxDown 字标
"Flux" 用主题强调色、"Down" 用主文字色,随主题自动适配。
1 parent 211d6c5 commit 1011ff9

1 file changed

Lines changed: 78 additions & 50 deletions

File tree

lib/src/widgets/sidebar.dart

Lines changed: 78 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -114,57 +114,85 @@ class _SidebarState extends State<Sidebar> {
114114
child: Container(
115115
height: 40,
116116
padding: const EdgeInsets.symmetric(horizontal: 16),
117-
alignment: Alignment.centerLeft,
118-
// 跟随「设置-外观-应用图标」切换:内置闪电/自定义图标启用时显示其预览
119-
child: ListenableBuilder(
120-
listenable: AppIconService.instance,
121-
builder: (context, _) {
122-
final svc = AppIconService.instance;
123-
if (svc.isBolt) {
124-
return ClipRRect(
125-
borderRadius: BorderRadius.circular(5),
126-
child: Image.asset(
127-
AppIconService.builtinBoltAsset,
128-
width: 22,
129-
height: 22,
130-
filterQuality: FilterQuality.medium,
131-
),
132-
);
133-
}
134-
final customPreview = svc.isCustom ? svc.previewPngPath : null;
135-
if (customPreview != null) {
136-
return ClipRRect(
137-
borderRadius: BorderRadius.circular(5),
138-
child: Image(
139-
key: ValueKey(svc.previewRevision),
140-
image: FileImage(File(customPreview)),
141-
width: 22,
142-
height: 22,
143-
filterQuality: FilterQuality.medium,
144-
gaplessPlayback: true,
145-
),
146-
);
147-
}
148-
// 暗色主题:蓝色箭头 + 透明背景(无白色圆角矩形,避免在深色侧边栏上显得突兀)
149-
// 亮色主题:完整圆角图标(白底 + 蓝色箭头)
150-
if (c.tokens.appearance == Brightness.dark) {
151-
return Image.asset(
152-
'assets/logo/logo_on_dark.png',
153-
width: 22,
154-
height: 22,
155-
filterQuality: FilterQuality.medium,
156-
);
157-
}
158-
return ClipRRect(
159-
borderRadius: BorderRadius.circular(5),
160-
child: Image.asset(
161-
'assets/logo/fluxdown_logo.png',
162-
width: 22,
163-
height: 22,
164-
filterQuality: FilterQuality.medium,
117+
child: Row(
118+
children: [
119+
// 跟随「设置-外观-应用图标」切换:内置闪电/自定义图标启用时显示其预览
120+
ListenableBuilder(
121+
listenable: AppIconService.instance,
122+
builder: (context, _) {
123+
final svc = AppIconService.instance;
124+
if (svc.isBolt) {
125+
return ClipRRect(
126+
borderRadius: BorderRadius.circular(5),
127+
child: Image.asset(
128+
AppIconService.builtinBoltAsset,
129+
width: 22,
130+
height: 22,
131+
filterQuality: FilterQuality.medium,
132+
),
133+
);
134+
}
135+
final customPreview = svc.isCustom ? svc.previewPngPath : null;
136+
if (customPreview != null) {
137+
return ClipRRect(
138+
borderRadius: BorderRadius.circular(5),
139+
child: Image(
140+
key: ValueKey(svc.previewRevision),
141+
image: FileImage(File(customPreview)),
142+
width: 22,
143+
height: 22,
144+
filterQuality: FilterQuality.medium,
145+
gaplessPlayback: true,
146+
),
147+
);
148+
}
149+
// 暗色主题:蓝色箭头 + 透明背景(无白色圆角矩形,避免在深色侧边栏上显得突兀)
150+
// 亮色主题:完整圆角图标(白底 + 蓝色箭头)
151+
if (c.tokens.appearance == Brightness.dark) {
152+
return Image.asset(
153+
'assets/logo/logo_on_dark.png',
154+
width: 22,
155+
height: 22,
156+
filterQuality: FilterQuality.medium,
157+
);
158+
}
159+
return ClipRRect(
160+
borderRadius: BorderRadius.circular(5),
161+
child: Image.asset(
162+
'assets/logo/fluxdown_logo.png',
163+
width: 22,
164+
height: 22,
165+
filterQuality: FilterQuality.medium,
166+
),
167+
);
168+
},
169+
),
170+
const SizedBox(width: 9),
171+
Text.rich(
172+
TextSpan(
173+
children: [
174+
TextSpan(
175+
text: 'Flux',
176+
style: TextStyle(
177+
fontSize: 13,
178+
fontWeight: FontWeight.w600,
179+
color: c.accent,
180+
letterSpacing: 0.3,
181+
),
182+
),
183+
TextSpan(
184+
text: 'Down',
185+
style: TextStyle(
186+
fontSize: 13,
187+
fontWeight: FontWeight.w500,
188+
color: c.textPrimary,
189+
letterSpacing: 0.3,
190+
),
191+
),
192+
],
165193
),
166-
);
167-
},
194+
),
195+
],
168196
),
169197
),
170198
);

0 commit comments

Comments
 (0)