onTap可以打印值,但是setState不会在UI和使用有状态的小部件以及在内部构建中使用im的情况下产生任何区别,我无法弄清我在哪里出错,而我使用的是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)),
),
],),
)
);
}
答案 0 :(得分:1)
您的变量不是页面状态的一部分,它不是构建功能的一部分。每次状态更改时,都会触发构建函数,并变回变量text
的值。
您需要移动此部分:
String text = "HEY";
void bb(){
print('Clicked Clicked');
setState(() {
text = "HEY2";
});
}
超出构建功能,变成这样:
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);
答案 1 :(得分:1)
您不应将变量放在build
内。它应该在build
函数之外。
class _YourPageState extends State<YourPage> {
String text = "HEY";
void bb() {
print('Clicked Clicked');
setState(() {
text = "HEY2";
}
Widget build(BuildContext context) {
....
}
}