Как получить объект кнопки [флаттер] - PullRequest
0 голосов
/ 25 апреля 2018

Я создал RaisedButton. Теперь я хочу знать, могу ли я передать ему ключ и получить доступ к его объекту в функции или есть какой-либо другой способ получить доступ к Raisebutton, кроме как сохранить его в переменной.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Flutter отличается от традиционной разработки Android.Здесь все является виджетом, а виджет имеет свое собственное состояние.

Согласно документации Flutter ,

Если вы хотите отключить кнопку, вам просто нужно передать значение NULL.Нажать на кнопку Raised.И если вы хотите включить передачу функции, вы можете передать также пустую функцию, например () {} this.

Проверьте приведенный ниже пример, чтобы понять его.

void main() {
  runApp(new ButtonDemoNew());
}

class ButtonDemoNew extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return new _ButtonStateDemo();
  }
}

class _ButtonStateDemo extends State<ButtonDemoNew> {
  bool enabled = false;

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return new MaterialApp(
      title: "Button Demo",
      home: new Scaffold(
        appBar: new AppBar(
          title: new Text("Button Demo"),
        ),
        body: new Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            new RaisedButton(
              onPressed: enabled ? () {} : null,
              child: new Text("Demo Button"),
            ),
            new RaisedButton(
              onPressed: () {
                setState(() {
                  enabled = enabled ? false : true;
                });
              },
              child: new Text("Enable / Disable"),
            )
          ],
        ),
      ),
    );
  }
}
0 голосов
/ 25 апреля 2018

Разъяснение того, что на самом деле хочет быть выполненным, было бы очень полезно.

Однако я думаю, что могу догадаться, в чем проблема - путаница в том, как работает флаттер.

ОбщееТо, как RaisedButton работает во Flutter, заключается в том, что вы удерживаете state в StatefulWidget где-то над ним, что создает RaisedButton.Если вы хотите изменить поднятое значение, вы устанавливаете переменную для StatefulWidget в пределах setState(() => ?? = ??); и используете ее в функции сборки StatefulWidget, чтобы решить, с какими параметрами собирать RaisedButton.

Вот краткий пример, который вызываеткнопка каждый раз, когда вы нажимаете ее.

class Raising extends StatefulWidget {
  final String text;

  Raising({@required this.text});

  @override
  State<StatefulWidget> createState() => RaisingState();
}

class RaisingState extends State<Raising> {
  double elevation = 0.0;

  @override
  Widget build(BuildContext context) => new RaisedButton(
        child: new Text(widget.text),
        elevation: elevation,
        onPressed: () => setState(() => elevation += 1),
      );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...