单击按钮后执行功能

时间:2019-08-01 14:01:15

标签: flutter dart

我有一个按钮,该按钮可将一些数据推送到列表,另一个功能是将数据显示到页面,单击该按钮后,数据将被推送到列表,但除非按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),
      ],
    );

2 个答案:

答案 0 :(得分:1)

首先,您必须使用StatefulWidget。我不知道您使用的是哪种类型的小部件,例如文档here

在此之后,接下来要做的是:

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),
      ],
    );
  }

答案 1 :(得分:0)

只需将您的方法更改为

    displayTextFields(device) {
        var children = <Widget>[];
        for (var i = 0; i < _controllers.length; i++) {
          children.add(
            TextField(
              controller: _controllers[i],
            ),
          );
    }

    return Column(
      children: children,
    );

    setState(() {
    });
}

我希望这会有所帮助。