android - 未定义函数 setState。扑
问题描述
我正在尝试为此更改我的复选框(实际上是自定义复选框)的颜色,我已经编写了下面的代码,当我按下图标时,该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,
),
),
],
),);}
解决方案
您必须使用StatefulWidget。
具有可变状态的小部件。
状态是(1)可以在构建小部件时同步读取的信息,以及(2)可能在小部件的生命周期内发生变化的信息。小部件实现者有责任使用 State.setState 确保在此类状态更改时及时通知状态。例如
class MyDemo extends StatefulWidget {
@override
_MyDemoState createState() => _MyDemoState();
}
class _MyDemoState extends State<MyDemo> {
@override
Widget build(BuildContext context) {
return Container(
child: IconButton(icon: null, onPressed: (){
setState(() {
//Do your stuff
});
}),
);
}
// every method which changes state should exist within class only
Widget _check(){
return IconButton(icon: null, onPressed: (){
setState(() {
});
});
}
}
推荐阅读
- git - 如何从收到的 Git 包中推送所有分支?
- linux - Bash 脚本:IP 地址变量可能吗?
- c# - 显示队列中的项目
- javascript - 方法未从 API 响应返回更新
- javascript - 网络调用失败的 Webpack5 模块联合后备
- scala - Scala中记忆/缓存请求的类型擦除
- python - pip3 install pgzero --- 导致命令“/usr/bin/gcc”失败,退出代码为 1(Python 3.9;macOS 10.15.7)
- python - 销毁 Tkinter 标签并关闭 VLC
- bash - 在我的 VSCode 终端中出现此错误:“bash: export: `=': not a valid identifier”
- linux - bash 在另一个完成后执行命令