Flutter 弗利特·伊康泰姆·沃恩';不适用

Flutter 弗利特·伊康泰姆·沃恩';不适用,flutter,Flutter,我有一个简单的颤振应用程序,它会在按下按钮时切换主题,同时应用整个主题。我以前定义的一些主题似乎没有应用到我的小部件中,比如当我将图标的默认颜色定义为绿色时,如下所示: final ThemeData themeDark = ThemeData.dark().copyWith( iconTheme: IconThemeData( color: Colors.green, ), ); 当我在浮动操作按钮图标中使用它时,它仍然使用默认的IconTheme class SwitchT

我有一个简单的颤振应用程序,它会在按下按钮时切换主题,同时应用整个主题。我以前定义的一些主题似乎没有应用到我的小部件中,比如当我将图标的默认颜色定义为绿色时,如下所示:

final ThemeData themeDark = ThemeData.dark().copyWith(
  iconTheme: IconThemeData(
    color: Colors.green,
  ),
);
当我在浮动操作按钮图标中使用它时,它仍然使用默认的IconTheme

class SwitchThemeButton extends StatelessWidget {
  SwitchThemeButton({Key? key, required this.onPressed}) : super(key: key);

  final VoidCallback onPressed;

  @override
  Widget build(BuildContext context) {
    return FloatingActionButton(
      child: Icon(
        Icons.favorite,
// This won't work unless I manually assign it!
//         color: IconTheme.of(context).color,
      ),
      onPressed: onPressed,
    );
  }
}
有人能指出我哪里做错了吗?顺便说一下,完整的代码就是这样的

完整代码:

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

final ThemeData themeDark = ThemeData.dark().copyWith(
  iconTheme: IconThemeData(
    color: Colors.green,
  ),
);

final ThemeData themeLight = ThemeData.light();

class MyApp extends StatefulWidget {
  @override
  MyAppState createState() => MyAppState();
}

class MyAppState extends State<MyApp> {
  final _isDarkTheme = ValueNotifier<bool>(true);

  @override
  Widget build(BuildContext context) {
    return ValueListenableBuilder<bool>(
      valueListenable: _isDarkTheme,
      builder: (context, bool isDark, _) => MaterialApp(
        theme: themeLight,
        darkTheme: themeDark,
        themeMode: isDark ? ThemeMode.dark : ThemeMode.light,
        home: Scaffold(
          body: Stack(
            children: [
              Align(
                alignment: Alignment.center,
                child: MyWidget(),
              ),
              Align(
                alignment: Alignment.bottomRight,
                child: SwitchThemeButton(onPressed: _switchTheme),
              ),
            ],
          ),
        ),
      ),
    );
  }

  void _switchTheme() {
    _isDarkTheme.value = !_isDarkTheme.value;
  }
}

class MyWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Text('Make me green!', style: Theme.of(context).textTheme.headline4);
  }
}

class SwitchThemeButton extends StatelessWidget {
  SwitchThemeButton({Key? key, required this.onPressed}) : super(key: key);

  final VoidCallback onPressed;

  @override
  Widget build(BuildContext context) {
    return FloatingActionButton(
      child: Icon(
        Icons.favorite,
//         color: IconTheme.of(context).color,
      ),
      onPressed: onPressed,
    );
  }
}
导入“包装:颤振/材料.省道”;
void main(){
runApp(MyApp());
}
final-ThemeData-themeDark=ThemeData.dark().copyWith(
iconTheme:IconThemeData(
颜色:颜色。绿色,
),
);
最终主题数据themeLight=ThemeData.light();
类MyApp扩展了StatefulWidget{
@凌驾
MyAppState createState()=>MyAppState();
}
类MyAppState扩展了状态{
最终_isDarkTheme=ValueNotifier(真);
@凌驾
小部件构建(构建上下文){
返回值ListenableBuilder(
valueListenable:_isDarkTheme,
生成器:(context,bool isDark,)=>MaterialApp(
主题:themeLight,
黑暗主题:主题公园,
表情:黑暗?表情。黑暗:表情。光明,
家:脚手架(
主体:堆栈(
儿童:[
对齐(
对齐:对齐.center,
子项:MyWidget(),
),
对齐(
对齐:对齐。右下角,
子项:切换主题按钮(按下:切换主题),
),
],
),
),
),
);
}
void(主题){
_isDarkTheme.value=!\u isDarkTheme.value;
}
}
类MyWidget扩展了无状态Widget{
@凌驾
小部件构建(构建上下文){
返回文本('Make me green!',样式:Theme.of(context.textTheme.headline4);
}
}
类SwitchThemeButton扩展了无状态小部件{
SwitchThemeButton({Key?键,需要这个。onPressed}):super(键:Key);
最后一次按下按钮;
@凌驾
小部件构建(构建上下文){
返回浮动操作按钮(
子:图标(
我的最爱,
//颜色:IconTheme.of(context).color,
),
onPressed:onPressed,
);
}
}

将根据
主题(上下文)分配
浮动操作按钮中
图标的颜色。accentColor
很抱歉,这也不行,我已尝试在主题数据中分配accentColor,但没有任何更改。