无法按下按钮按下工作

Xat*_*ene 2 dart flutter

好吧,我很擅长扑扑/飞镖,所以对我来说很容易.我只是想创建一个非常简单的应用程序,当你按下按钮时,一些文本更新会告诉你按下按钮多少次.我不知道为什么这段代码不起作用.按钮出现但按下时没有任何反应.

import 'package:flutter/material.dart';

class Homepage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Column(
      children: <Widget>[],
    );
  }
}

class Buttonz extends StatefulWidget {
  @override
  _ButtonBeingPressed createState() => new _ButtonBeingPressed();
}

class _ButtonBeingPressed extends State<Buttonz> {
  int _timesPressed = 0;
  _buttonWasPressed() {
    setState(() {
      _timesPressed++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return new Column(children: <Widget>[
     new Center(
          child: new Row(
        children: <Widget>[
          new Text(
              'The button was pressed ' + _timesPressed.toString() + "         
 times"),
          new RaisedButton(
            onPressed: _buttonWasPressed(),
           child: new Row(
              children: <Widget>[new Text("Press meh")],
            ),
          ),
        ],
      ))
    ]);
  }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*ams 5

你的问题是你没有通过回调RaisedButton,你调用了你的回调.

new RaisedButton(
  onPressed: _buttonWasPressed(), // invokes function
  child: new Row(children: <Widget>[new Text("Press meh")]),
);
Run Code Online (Sandbox Code Playgroud)

要将回调传递给另一个小部件,您有两个选择:

通过撕掉

 new RaisedButton(
   onPressed: _buttonWasPressed, // no `()`,
   child: ...
 )
Run Code Online (Sandbox Code Playgroud)

通过关闭

 new RaisedButton(
   onPressed: () {
     // do something.
   },
   ..
 )
Run Code Online (Sandbox Code Playgroud)


bab*_*thy 0

添加了一个 Material 应用程序并稍微重新连接了 RaisingButton。我想这就是你的onPressed接线方式。

import 'package:flutter/material.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(home: new Buttonz());
  }
}

class Buttonz extends StatefulWidget {
  @override
  _ButtonBeingPressed createState() => new _ButtonBeingPressed();
}

class _ButtonBeingPressed extends State<Buttonz> {
  int _timesPressed = 0;
  _buttonWasPressed() {
    setState(() {
      _timesPressed++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return  new Column(
      children: <Widget>[
        new Text(
            'The button was pressed $_timesPressed times'),
        new RaisedButton(
          child: const Text('Press meh'),
          onPressed: () {
            _buttonWasPressed();
          },
        ),
      ],
    );
  }
}
Run Code Online (Sandbox Code Playgroud)