我试图改变图标的颜色,使其与文本的其余部分相匹配。我使用以下语句来根据主题确定使用哪个图标:
class ChangeThemeButtonWidget extends StatelessWidget {
const ChangeThemeButtonWidget({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return IconButton(
icon: Icon(Provider.of<ThemeProvider>(context).isDarkMode
? dark_mode_icon()
: Icons.light_mode),
onPressed: () {
final provider = Provider.of<ThemeProvider>(context, listen: false);
provider.toggleTheme(!provider.isDarkMode);
},
);
}
和
IconData dark_mode_icon() {
//return IconData(0xe37a, fontFamily: 'MaterialIcons');
IconData dark_mode_i = IconData(Icons.dark_mode, color: Colors.black);
return dark_mode_i;
}
我的问题是,这会返回错误"参数类型'IconData'不能分配给参数类型'int'。">
我怎样才能编辑这个图标的样式,使它正确地改变颜色?
非常感谢你的帮助
你在错误的地方上色。IconData只是一个基于字体数据描述Icon的小部件。这与颜色无关。你必须把这些IconData放到图标小部件中并在那里改变颜色。
class ChangeThemeButtonWidget extends StatelessWidget {
const ChangeThemeButtonWidget({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return IconButton(
icon: Icon(Provider.of<ThemeProvider>(context).isDarkMode
? Icons.dark_mode
: Icons.light_mode,
color: #HERE
),
onPressed: () {
final provider = Provider.of<ThemeProvider>(context, listen: false);
provider.toggleTheme(!provider.isDarkMode);
},
);
}
简单地使用这个代码:
IconButton(
onPressed: () {},
color: Colors.blue,
iconSize: 100,
icon: Icon(
Icons.train,
),
)
这是如何应用颜色到图标按钮。
图标。暗模式是图标数据。IconData()将接受一个整数,所以你必须写IconData(Icons.darkmode.codePoint)