【发布时间】:2021-04-10 11:26:07
【问题描述】:
我是 Flutter 的新手,最近几天我有一个非常简单的问题让我很烦恼。我有这个简单的凸起按钮:
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
TextField(),
RaisedButton(
child: Text("Clicou"),
onPressed: () {
_changeText();
}),
MyText(myText)
],
)
在那里我调用onPressed_changeText(),这是一个更改屏幕上标签的简单函数,但是检查我在最后使用() 调用我的方法。
好吧,我从 youtube 视频中学习,那里的人说我应该在没有 () 的情况下通过我的方法,但是当我尝试这种方式时,按钮根本不起作用。
所以,我的问题实际上是:我应该如何调用 onPressed 或任何其他事件监听器的方法?
这是我的代码文件:
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
// entry point for the app,
// the => operator is shorthand for {} when there is only one line of code
void main() => runApp(Root());
class Root extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MyApp();
}
}
// the root widget of our application
class MyApp extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return MyAppState();
}
}
class MyAppState extends State<MyApp> {
String myText = "";
void _changeText() {
print("TESETSSS");
setState(() {
myText = "batman";
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text("Building layouts"),
),
body: Container(
padding: const EdgeInsets.all(15.0),
margin: EdgeInsets.all(15.0),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
TextField(),
RaisedButton(
child: Text("Clicou"),
onPressed: () {
_changeText();
}),
MyText(myText)
],
))),
);
}
}
class MyText extends StatelessWidget {
final String myText;
MyText(this.myText);
@override
Widget build(BuildContext context) {
return Text(myText);
}
}
【问题讨论】:
-
正如我对您的问题的理解,您只想将一个函数引用到
onPressed。如果是这样,onPressed: _changeText将解决您的问题。 -
这就是问题所在,当我引用该函数时,按钮停止工作,但是如果我调用该函数,它又开始工作了。
-
奇怪...我尝试了您的代码并使用了函数引用方法,它工作正常。
-
@rickimaru 我知道我做错了什么,我要回答我自己的问题。
标签: flutter mobile event-handling flutter-onpressed