@@ -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