Flutter 按钮点击抖动后执行功能
我有一个按钮,可以将一些数据推送到列表中,还有一个功能可以将数据显示到页面中。单击按钮后,数据会被推送到列表中,但除非我按R刷新它,否则它不会出现在屏幕上。 因此,我需要一些生命周期方法或其他方法来让它工作Flutter 按钮点击抖动后执行功能,flutter,dart,Flutter,Dart,我有一个按钮,可以将一些数据推送到列表中,还有一个功能可以将数据显示到页面中。单击按钮后,数据会被推送到列表中,但除非我按R刷新它,否则它不会出现在屏幕上。 因此,我需要一些生命周期方法或其他方法来让它工作 final List<TextEditingController> _controllers = []; void onButtonPress() { TextEditingController newController = TextEditingContro
final List<TextEditingController> _controllers = [];
void onButtonPress() {
TextEditingController newController = TextEditingController();
_controllers.add(newController);
}
displayTextFields(device) {
var children = <Widget>[];
for (var i = 0; i < _controllers.length; i++) {
children.add(
TextField(
controller: _controllers[i],
),
);
}
return Column(
children: children,
);
}
...
return Stack(
children: <Widget>[
Center(
child: RaisedButton(
child: Text('Click Button '),
onPressed: onButtonPress,
),
),
displayTextFields(device),
],
);
最终列表_控制器=[];
void onButtonPress(){
TextEditingController新控制器=TextEditingController();
_控制器。添加(newController);
}
displayTextFields(设备){
var children=[];
对于(变量i=0;i<\u controllers.length;i++){
children.add(
文本字段(
控制器:_控制器[i],
),
);
}
返回列(
儿童:儿童,,
);
}
...
返回堆栈(
儿童:[
居中(
孩子:升起按钮(
子项:文本(“单击按钮”),
ON按下:ON按钮按下,
),
),
displayTextFields(设备),
],
);
首先,您必须使用一个StatefulWidget
。我不知道你用的是什么类型的小部件,请看文档
在此之后,您必须做的是下一步:
List<TextEditingController> _controllers = [];
void onButtonPress() {
TextEditingController newController = TextEditingController();
_controllers.add(newController);
setState() {
_controllers = List.from(_controllers)..add(newController);
}
}
displayTextFields(device) {
var children = <Widget>[];
for (var i = 0; i < _controllers.length; i++) {
children.add(
TextField(
controller: _controllers[i],
),
);
}
return Column(
children: children,
);
}
...
return Stack(
children: <Widget>[
Center(
child: RaisedButton(
child: Text('Clicl Button'),
onPressed: onButtonPress,
),
),
displayTextFields(device),
],
);
}
列出_控制器=[];
void onButtonPress(){
TextEditingController新控制器=TextEditingController();
_控制器。添加(newController);
setState(){
_控制器=列表。从(_控制器)…添加(新控制器);
}
}
displayTextFields(设备){
var children=[];
对于(变量i=0;i<\u controllers.length;i++){
children.add(
文本字段(
控制器:_控制器[i],
),
);
}
返回列(
儿童:儿童,,
);
}
...
返回堆栈(
儿童:[
居中(
孩子:升起按钮(
子项:文本(“Clicl按钮”),
ON按下:ON按钮按下,
),
),
displayTextFields(设备),
],
);
}
只需将方法更改为
displayTextFields(device) {
var children = <Widget>[];
for (var i = 0; i < _controllers.length; i++) {
children.add(
TextField(
controller: _controllers[i],
),
);
}
return Column(
children: children,
);
setState(() {
});
}
displayTextFields(设备){
var children=[];
对于(变量i=0;i<\u controllers.length;i++){
children.add(
文本字段(
控制器:_控制器[i],
),
);
}
返回列(
儿童:儿童,,
);
设置状态(){
});
}
我希望这有帮助