好吧,我很擅长扑扑/飞镖,所以对我来说很容易 . 我只是想创建一个非常简单的应用程序,当你按下按钮时,一些文本更新会告诉你按下按钮多少次 . 我不知道为什么这段代码不起作用 . 按钮出现但按下时没有任何反应 .
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")],
),
),
],
))
]);
}
}
4 回答
你的按钮应该是这样的:
如果这不起作用,请尝试使用
flutter clean
清理flutter
项目,然后在调试设备上重新安装该应用程序 .像 onPressed 这样的事件监听器:只接受回调(包括匿名函数) . 因此,您需要将_buttonWasPressed()替换为_buttonWasPressed .
注意:我观察到扑灭的beta-3,_buttonWasPressed()给出了编译错误 .
你的问题是你没有将回调传递给
RaisedButton
,你调用了你的回调 .要将回调传递给另一个小部件,您有两个选择:
通过撕下
传递一个闭包
添加了一个Material App并重新连接了RaisedButton . 我认为这是你如何连接的.515897_ .