Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 按钮点击抖动后执行功能_Flutter_Dart - Fatal编程技术网

Flutter 按钮点击抖动后执行功能

Flutter 按钮点击抖动后执行功能,flutter,dart,Flutter,Dart,我有一个按钮,可以将一些数据推送到列表中,还有一个功能可以将数据显示到页面中。单击按钮后,数据会被推送到列表中,但除非我按R刷新它,否则它不会出现在屏幕上。 因此,我需要一些生命周期方法或其他方法来让它工作 final List<TextEditingController> _controllers = []; void onButtonPress() { TextEditingController newController = TextEditingContro

我有一个按钮,可以将一些数据推送到列表中,还有一个功能可以将数据显示到页面中。单击按钮后,数据会被推送到列表中,但除非我按R刷新它,否则它不会出现在屏幕上。 因此,我需要一些生命周期方法或其他方法来让它工作

  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],
),
);
}
返回列(
儿童:儿童,,
);
设置状态(){
});
}
我希望这有帮助