0

我是 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);
  }

}
4

1 回答 1

0

一段时间后,我弄清楚出了什么问题。在这段代码中,我创建了一个匿名函数,他们在其中调用我的更改文本函数,所以引用什么也不做。

                  RaisedButton(
                      child: Text("Clicou"),
                      onPressed: () {
                        _changeText();
                      }),

正确的方法是:

                  RaisedButton(
                      child: Text("Clicou"),
                      onPressed: _changeText
                      ),

在第二种情况下,我将“onPressed”引用到 _changeText;有它,就像一个魅力。

于 2021-04-10T12:18:48.247 回答