Flutter中如何在ThemeData内修改ListTile的leading图标颜色
问题原因
该异常是Flutter 2.5版本调整ListTile组件的主题样式继承逻辑导致的,升级后ListTile的leading图标默认会优先读取全局listTileTheme配置的iconColor属性,未配置时暗色模式下就会出现颜色显示异常。
解决方案
仅需在暗色模式的ThemeData中新增ListTile主题配置,指定图标颜色为白色即可,亮色模式无需修改即可保留原有默认表现。
修改后的完整代码如下:
import 'package:flutter/material.dart'; static ThemeData myTheme(bool isDark) { return !isDark ? ThemeData.light().copyWith( primaryColor: Colors.deepPurple, colorScheme: ColorScheme.fromSwatch().copyWith( secondary: Colors.deepPurple, ), ) : ThemeData.dark().copyWith( primaryColor: Colors.deepPurple, colorScheme: ColorScheme.fromSwatch().copyWith( secondary: Colors.deepPurple, ), // 新增ListTile全局主题配置 listTileTheme: const ListTileThemeData( iconColor: Colors.white, ), ); }
补充说明
- 如果需要调整ListTile的其他全局样式,可以直接在
ListTileThemeData中配置对应参数,常用可配置项包括文字样式textStyle、列表项背景色tileColor、leading区域最小宽度minLeadingWidth等。 - 如果单个ListTile需要单独设置leading图标颜色,直接给Icon组件指定
color属性即可,该配置优先级高于全局主题设置。
内容的提问来源于stack exchange,提问作者Arud
相关产品推荐
相关产品推荐

