【发布时间】:2019-11-29 08:37:14
【问题描述】:
我正在尝试为此更改我的复选框(实际上是自定义复选框)的颜色我已经编写了下面的代码,当我按下图标时,onPressed() 方法被调用但图标的颜色没有改变完全没有。
我的小部件setState() 无法识别。我已经加入了import package:flutter/material.dart
这是代码
Widget _choice() {
var isPressed = false;
return Container(
height: 90,
width: 160,
color: Color(0xFFe6e9ed),
child: Column(
children: <Widget>[
Align(
alignment: Alignment(0.9, 0),
child: IconButton(
icon: Icon(
Icons.check_circle,
size: 25,
color:(isPressed) ? Color(0xff007397) : Color(0xff9A9A9A)
),
onPressed: (){
setState((){ // <-- this setState is un-recognizable by flutter ide
if(isPressed){ print("checkbox pressed");
isPressed = false;
} else {
isPressed = true;
}
});
},
),
),
Align(
alignment: Alignment(-0.8, 0),
child: Text("Category choice 1"),
),
Align(
alignment: Alignment(0.9, 0),
child: Icon(
Icons.phonelink,
size: 40,
),
),
],
),);}
【问题讨论】:
-
我相信你没有使用 StatefulWdiget。
-
使 _choice 成为一个有状态的小部件(让它扩展 StatefulWidget),而不仅仅是一个使用 setState 的方法
-
我已经用 StatefulWidget 扩展了我的类,这是我在类外创建并在构建小部件中调用它的小部件。