Flutter 扩展文件小部件时更改其标题文本的颜色

Flutter 扩展文件小部件时更改其标题文本的颜色,flutter,Flutter,我正在使用扩展文件,并在处于折叠状态时覆盖默认文本颜色。我想在小部件展开时更改标题文本的颜色。我注意到,如果没有使用自定义文本颜色,默认行为是更改颜色,但是一旦使用自定义颜色,这将不再有效。这是我的密码 class TestScreen extends StatefulWidget { @override _TestScreenState createState() => _TestScreenState(); } class _TestScreenState extends S

我正在使用扩展文件,并在处于折叠状态时覆盖默认文本颜色。我想在小部件展开时更改标题文本的颜色。我注意到,如果没有使用自定义文本颜色,默认行为是更改颜色,但是一旦使用自定义颜色,这将不再有效。这是我的密码

class TestScreen extends StatefulWidget {
  @override
  _TestScreenState createState() => _TestScreenState();
}

class _TestScreenState extends State<TestScreen> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Padding(
        padding: const EdgeInsets.only(top: 100.0),
        child: Card(
          child: Center(
            child: Column(
              children: <Widget>[
                ExpansionTile(
                  title: Text(
                    'Text 1',
                    style: TextStyle(
                      fontSize: 18,
                      fontWeight: FontWeight.bold,
                      color: Color.fromRGBO(112, 190, 115, 1),
                    ),
                  ),
                  children: <Widget>[Text('Text 2'), Text('Text 3')],
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}
class TestScreen扩展StatefulWidget{
@凌驾
_TestScreenState createState();
}
类_TestScreenState扩展状态{
@凌驾
小部件构建(构建上下文){
返回脚手架(
主体:填充物(
填充:仅限常量边集(顶部:100.0),
孩子:卡片(
儿童:中心(
子:列(
儿童:[
扩展文件(
标题:正文(
“文本1”,
样式:TextStyle(
尺码:18,
fontWeight:fontWeight.bold,
颜色:颜色。来自RGBO(1121901151),
),
),
子项:[Text('Text 2')、Text('Text 3')],
),
],
),
),
),
),
);
}
}

您需要首先在
build
方法之外声明颜色。然后使用
expansiontile
onExpansionChanged
事件更新它。像这样:

class TestScreen extends StatefulWidget {
  @override
  _TestScreenState createState() => _TestScreenState();
}

class _TestScreenState extends State<TestScreen> {
  Color _textColor = Colors.green;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Padding(
        padding: const EdgeInsets.only(top: 100.0),
        child: Card(
          child: Center(
            child: Column(
              children: <Widget>[
                ExpansionTile(
                  onExpansionChanged: (expanded) {
                    setState(() {
                      if (expanded) {
                        _textColor = Colors.blue;
                      } else {
                        _textColor = Colors.green;
                      }
                    });
                  },
                  title: Text(
                    'Text 1',
                    style: TextStyle(
                      fontSize: 18,
                      fontWeight: FontWeight.bold,
                      color: _textColor,
                    ),
                  ),
                  children: <Widget>[Text('Text 2'), Text('Text 3')],
                ),
              ],
            ),
          ),
        ),
      ),
    );
  }
}
class TestScreen扩展StatefulWidget{
@凌驾
_TestScreenState createState();
}
类_TestScreenState扩展状态{
颜色_textColor=Colors.green;
@凌驾
小部件构建(构建上下文){
返回脚手架(
主体:填充物(
填充:仅限常量边集(顶部:100.0),
孩子:卡片(
儿童:中心(
子:列(
儿童:[
扩展文件(
OneExpansionChanged:(已展开){
设置状态(){
如果(扩展){
_textColor=Colors.blue;
}否则{
_textColor=Colors.green;
}
});
},
标题:正文(
“文本1”,
样式:TextStyle(
尺码:18,
fontWeight:fontWeight.bold,
颜色:_textColor,
),
),
子项:[Text('Text 2')、Text('Text 3')],
),
],
),
),
),
),
);
}
}

工作正常!