当前位置: 首页 > 知识库问答 >
问题:

将文本传递到RaisedButton OnTap-Flutter

叶德本
2023-03-14
      body: new Container(
          padding: EdgeInsets.all(14.0),
          child: Column(
              mainAxisAlignment: MainAxisAlignment.start,
              children: <Widget>[
                Row(
                  //Start of the 1st Row
                    mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                    children: <Widget>[
                      // Button 0 in 1st Row
                      RaisedButton(
                        padding: const EdgeInsets.all(20.0),
                        onPressed: () {
                          _button0();
                        },
                        child: new Text(_mBoard[0],
                            textAlign: TextAlign.center,
                            style: new TextStyle(
                              fontWeight: FontWeight.bold,
                              fontSize: 40.0,
                              fontFamily: 'Roboto',
                            )),
                        color: Colors.grey[300],
                      ),

  void _button0() {
    setState(() {
      if (_mBoard[0] == humanPlayer || _mBoard[0] == computerPlayer) {
        return;
      } else if (win == 0) {
        if (turn == 0) {
          _mBoard[0] = humanPlayer;
          _text = humanPlayer + " MOVED, O's TURN";
          turn = 1;
          win = checkWinner();
          checkGameOver(win);
          displayBoard();
        }
        if ((turn == 1) && (win == 0)) {
          turn = 0;
          computerTurn();
          win = checkWinner();
          checkGameOver(win);
          displayBoard();
        }
      }
    });
  }

打印板到控制台:

void displayBoard() {
  print(_mBoard[0] + " | " + _mBoard[1] + " | " + _mBoard[2]);
  print("-----------");
  print(_mBoard[3] + " | " + _mBoard[4] + " | " + _mBoard[5]);
  print("-----------");
  print(_mBoard[6] + " | " + _mBoard[7] + " | " + _mBoard[8]);
}

我希望用户对RaisedButton的选择显示一个“X”,而计算机的选择显示一个“O”。

共有1个答案

慕容渊
2023-03-14

在setState()中包含了where_mboard值更新的部分和displayBoard()方法。一旦调用setState(),它将通知StatefulWidget更新视图。但是您在setState内调用displayBoard(),而且这个方法还没有updated mboard值。

有两种方法可以解决这个问题,

>

  • 将_mboard作为参数传递给displayBoard(_mboard),这样它将访问本地_mboard值而不是状态值。

  •  类似资料:
    • 问题内容: subprocess.call([“/home/myuser/run.sh”, “/tmp/ad_xml”, “/tmp/video_xml”]) 现在,我有了运行的脚本。当我运行它并到达此行时,它开始打印内容,因为run.sh中有打印内容。 如何将其也管道传输到文本文件?(如果可能,还可以打印) 问题答案: 如果要将输出写入文件,可以使用stdout -argument of 。 它

    • 问题内容: 通常,我会使用一个JavaScript文件,该文件需要在网页中定义某些变量。 所以代码是这样的: 但是我想做的是: 我尝试了不同的方法,最好的方法是解析查询字符串,如下所示: 然后搜索我的价值观。 我想知道是否还有另一种方法可以执行此操作而无需构建函数来解析我的字符串。 你们都知道其他方法吗? 问题答案: 如果可能,我建议不要使用全局变量。使用名称空间和OOP将参数传递给对象。 此代码

    • 问题内容: 我正在尝试将数据发送到我的PHP脚本来处理一些东西并生成一些东西。 在我的PHP文件中,我尝试检索专辑名称。虽然当我验证它时,我创建了一个警报以显示什么都没收到,但是我尝试通过 虽然会说undefined:/ 问题答案: 您正在发送POST AJAX请求,因此请在您的服务器上使用来获取值。我也建议您这样编写请求,以确保正确的编码: 或简称为: 如果您想使用GET请求: 或简称为: 现在

    • 开头是我的jsp页面代码: 我想从

    • 问题内容: 我试图编写一个程序来通过args读取文本文件,但是当我运行它时,它总是说找不到该文件,即使我将其放置在与我正在运行的main.java相同的文件夹中。有谁知道我的问题的解决方案或更好的阅读文本文件的方法? 问题答案: 请勿在中使用相对路径。 它将变成相对于当前工作目录的,这取决于您如何运行应用程序,而该方法又是无法从应用程序内部进行控制的。这只会导致可移植性麻烦。如果从Eclipse内

    • 我正在使用TestNG执行单元测试,其中我正在使用xml文件中定义的测试用例测试我的代码。 我正在使用xml文件中定义的测试用例执行登录操作。但问题是我想在方法登录中以usersname和password的形式发送参数。 是否可以将值(用户名和密码)传递给执行测试用例的xml文件中的登录方法? 下面是我的XML文件 谢谢