好的,我很擅长扑扑/飞镖,所以对我很轻松。我只想尝试创建一个非常简单的应用程序,当您按下按钮时,会有一些文本更新告诉您按下按钮的次数。我不知道为什么这段代码不起作用。按钮出现但按下时没有任何反应。
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")],
),
),
],
))
]);
}
}
答案 0 :(得分:5)
您的问题是您没有将回调传递给RaisedButton
,而是调用了您的回调。
new RaisedButton(
onPressed: _buttonWasPressed(), // invokes function
child: new Row(children: <Widget>[new Text("Press meh")]),
);
要将回调传递给另一个小部件,您有两个选择:
new RaisedButton(
onPressed: _buttonWasPressed, // no `()`,
child: ...
)
new RaisedButton(
onPressed: () {
// do something.
},
..
)
答案 1 :(得分:0)
添加了一个Material App并重新连接了RaisedButton。我认为这就是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();
},
),
],
);
}
}
答案 2 :(得分:0)
在某些情况下,这可能与堆栈中的小部件一起发生。
该Widget可能被另一个Widget覆盖,因此无法单击它。
答案 3 :(得分:-2)
你的按钮应该是这样的。:
new RaisedButton(
child: const Text('Press meh'),
onPressed: _buttonWasPressed,
),
如果这不起作用,请尝试使用flutter
清除flutter clean
项目,然后在调试设备上重新安装该应用。