我是Flutter的新手,我遇到一个问题,因为我想使用从numbers()函数传递的值更新Text小部件。
问题在于,当我按下按钮时,“文本”中的值在屏幕上不会更改,但在控制台中会更改。
class _HomeState extends State<Home> {
int n = 10;
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.deepPurpleAccent,
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(n.toString()),
RaisedButton(
onPressed: (){
n += numbers();
print(n.toString());
},
),
],
),
),
);
}
}
int numbers (){
List<int> numbersList = List(1);
numbersList[0] = 30;
int n1 = numbersList[0];
return n1;
print(numbersList[0].toString());
}
答案 0 :(得分:1)
这是可以预期的,因为在任何时候您都想“刷新”屏幕时,都必须为要更新的小部件调用setState()
。因此,您要做的就是在onPressed函数中执行以下操作:
setState(){
n += numbers();
}
print(n.toString());
您可以阅读有关有状态窗口小部件和setState here
的更多信息。答案 1 :(得分:1)
如何更改它
GRUB_TIMEOUT
答案 2 :(得分:1)
如果要更新UI,则应在flutter中调用setState((){});
方法。此方法在StatefulWidget
中可用
您应该以以下方式实施
class _HomeState extends State<Home> {
int n = 10;
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.deepPurpleAccent,
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(n.toString()),
RaisedButton(
onPressed: () {
setState(() {
n += numbers();
});
},
),
],
),
),
);
}
}
int numbers() {
List<int> numbersList = List(1);
numbersList[0] = 30;
int n1 = numbersList[0];
return n1;
}