onTap 它打印值,但 setState 在 UI 中没有任何区别,我在有状态小部件和内部构建中也使用它,我无法得到我犯错误的地方,并且我使用 flutter beta。
Widget build(BuildContext context) {
String text = "HEY";
void bb(){
print('Clicked Clicked');
setState(() {
text = "HEY2";
});
}
return Scaffold(
body: Container(
decoration: BoxDecoration(
image: DecorationImage(image: new AssetImage("assets/floor.jpg"), fit: BoxFit.cover,),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
children: [
Center(
child: Text(
'HELLO, WORLD!',
style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold),
textScaleFactor: 6,),
),
Divider(height: 80),
GestureDetector(
onTap: (){
bb();
},
child: Text(text, style: TextStyle(color: Colors.red)),
),
],),
)
);
Run Code Online (Sandbox Code Playgroud)
}
Gui*_*ini 11
您的变量不是页面状态的一部分,而是构建函数的一部分。每次状态发生变化时,都会触发构建函数,将变量的值改回text。
您需要移动这部分:
String text = "HEY";
void bb(){
print('Clicked Clicked');
setState(() {
text = "HEY2";
});
}
Run Code Online (Sandbox Code Playgroud)
到构建函数之外,变成这样:
class _MyHomePageState extends State<MyHomePage> {
String text = "HEY";
void bb(){
print('Clicked Clicked');
setState(() {
text = "HEY2";
});
}
@override
Widget build(BuildContext context) {
List<bool> _selections = List.generate(3, (index) => false);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6276 次 |
| 最近记录: |