Flutter 设置状态 onPressed on RaisingButton

2023-12-26

我正在构建一个测验应用程序,它会在用户提交他们选择的答案后显示正确答案的解释。

布局上有两个按钮——“下一个问题”和“提交答案”。

在初始状态下,“下一个问题”按钮很微妙,因为它不可点击,只有“提交答案”按钮可点击。

点击这里查看初始状态的布局 https://i.stack.imgur.com/xTPiO.jpg

单击“提交答案”按钮时,会发生两个操作:
1.“提交答案”按钮变得微妙且不可点击,“下一个问题”按钮变得粗体且充满活力,当然是可点击的。
2. 另外,在两个按钮行的下方,会出现一个附加部分(可能是另一个容器,我不知道),显示正确答案的解释。

我需要一些帮助来实施上述两项行动

到目前为止,这是我的代码:

Widget nextQuestion = new RaisedButton(
  padding: const EdgeInsets.all(10.0),
  child: const Text('Next Question'),
  color: Color(0xFFE9E9E9),
  elevation: 0.0,
  onPressed: () {
    null;
  },
);

Widget submitAnswer = new RaisedButton(
  padding: const EdgeInsets.all(10.0),
  child: const Text('Submit Answer'),
  color: Color(0xFFE08284),
  elevation: 5.0,
  onPressed: () {
    null;
  },
);

return Scaffold(
  body: new CustomScrollView(
    slivers: <Widget>[
      new SliverPadding(
        padding: new EdgeInsets.all(0.0),
        sliver: new SliverList(
          delegate: new SliverChildListDelegate([
            new Row(
                crossAxisAlignment: CrossAxisAlignment.center,
                mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                mainAxisSize: MainAxisSize.min,
                children: <Widget>[nextQuestion, submitAnswer]),
            new SizedBox(height: 50.0),
          ]),
        ),
      ),
    ],
  ),
);

你可以使用setState method.

我实现了类似的东西,只是经历一下。

import 'package:flutter/material.dart';

  void main() {
    runApp(MaterialApp(
      title: 'Demo',
      initialRoute: '/',
      routes: {
        '/': (context) => FirstScreen(),
        '/second': (context) => SecondScreen(),
      },
    ));
  }


  class FirstScreen extends StatefulWidget {
    @override
    _FirstScreenState createState() => _FirstScreenState();
  }

  class _FirstScreenState extends State<FirstScreen> {
    int submit = 0;

    @override
    Widget build(BuildContext context) {
      return Scaffold(
          appBar: AppBar(
            title: Text("Demo"),
          ),
          body: new Column(
            mainAxisSize: MainAxisSize.max,
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: <Widget>[
              Row(
                children: <Widget>[
                  new RaisedButton(
                      padding: const EdgeInsets.all(10.0),
                      child: const Text('Next Question'),
                      color: submit == 0 ? Color(0xFFE9E9E9) : Colors.grey,
                      elevation: 0.0,
                      onPressed: () {
                        submit == 0 ? null : Navigator.push(
                          context,
                          MaterialPageRoute(builder: (context) => SecondScreen()),
                        );
                      }
                  ),
                  new RaisedButton(
                    padding: const EdgeInsets.all(10.0),
                    child: const Text('Submit Answer'),
                    color: Color(0xFFE08284),
                    elevation: 0.0,
                    onPressed: () {
                      setState(() {
                        submit = 1;
                      });
                    },
                  ),
                ],
              ),
              submit == 1 ? new Container(
                child: new Text("hello World"),
              ) : new Container()
            ],
          )
      );
    }
  }



  class SecondScreen extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
      return Scaffold(
        appBar: AppBar(
          title: Text("Second Screen"),
        ),
        body: Center(
          child: RaisedButton(
            onPressed: () {
              Navigator.pop(context);
            },
            child: Text('Go back!'),
          ),
        ),
      );
    }
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flutter 设置状态 onPressed on RaisingButton 的相关文章

随机推荐

  • 当输入列表为空时删除 JXLS 中的模板行

    我正在使用 JXLS 填充 Excel 电子表格模板 有时 一个输入 列表 是空的 发生这种情况时 使用此列表的模板字段将以完整的 JXLS 标志显示在填充的电子表格中 例如 someList someValue 有问题的字段都在一行中 扩
  • 角度 2 中的指令执行顺序

    如果我有一个带有单击处理程序和自定义属性指令的简单按钮 如下所示
  • 如何使用所需信息呈现表单字段

    有没有什么聪明的方法可以让 django 表单在所需字段后渲染带有星号的字段 或者提供一些其他聪明的方法来标记必填字段 如果我已经按照表单中的要求设置了字段 我不想在模板中再次执行此操作 从 Django 1 2 开始 如果您的表单有一个名
  • Xcode 链接器错误:对于架构 x86_64 文件太小

    我正在 Xcode 中开发一个应用程序 当我尝试构建时 出现此错误 ld in Users theodore Library Developer Xcode DerivedData Tower bkpdifuqssebjdgurzmtirb
  • 如何处理java中“死存储到局部变量”的错误?

    我写了一个简单的测试代码 这是一个圆圈 我想大多数人都能想象到什么是圆类 所以我就不贴了 在测试代 码中 我尝试使用无效点测试圆构造函数 并假设抛出异常 但出现了一个错误 上网查了一下 还是不知道如何解决 有人可以帮助我吗 谢谢 代码信息
  • 日期时间值不正确:“2012-07-14 23:00:00”

    我在使用 Python MySQL 处理日期时间格式时遇到一些问题 我使用以下脚本 由 Python 字典提供 计算日期时间 tempDate str eachday get date get year zfill 4 str eachda
  • #include 导致很多语法错误

    我的程序使用 Qt 和 OpenGL 它在 Linux 和 Mac 下都能正确编译 在Windows上编译时 我需要 include windows h才能使用OpenGL 代码如下 if defined WIN32 defined WIN
  • 不能需要全局 npm 模块

    我有以下问题 我安装 uuidnpm install g uuid 当我尝试运行以下代码时 var uuid require uuid console log uuid v1 抛出异常 module js 339 throw err Err
  • std::vector 和 C 风格数组

    我正在尝试OpenCL http www khronos org opencl 提高我们软件的速度 我们经常使用映射 为了简化 将映射表示为 std vector OpenCL API 采用原始 C 风格指针作为参数 例如上述情况中的 in
  • 如何设置PowerShell的默认目录?

    有没有办法更改 PowerShell 默认位置 如何设置PowerShell的默认工作目录 创建一个PowerShell 简介 https learn microsoft com en us powershell module micros
  • com.microsoft.sqlserver.jdbc.SQLServerException:MSI 令牌失败:无法从 MSI 端点获取令牌

    我想使用应用服务 API Java 和 MSI 托管服务身份 身份验证来访问 Azure SQL 数据库 我试图找出如何从适用于 Java 的 Azure 应用服务将 Azure sql 与 MSI 连接 这是我正在使用的连接字符串 jdb
  • 脚本脚本需要刷新页面才能运行吗?

    该脚本有助于在线商店的结帐过程 除了需要刷新页面以使程序最初运行之外 一切正常 我想知道这是否是缓存问题 因为它适用于以前查看过的其他产品 我也尝试修补 run at无济于事 我正在使用脚本式的扩展 它是一个独立的 js file User
  • 如何在 Node.js 中渲染 EJS 模板文件?

    我正在使用 Node js 并尝试呈现 EJS 模板文件 我弄清楚了如何渲染字符串 var http require http var ejs require ejs var server http createServer functio
  • 如何查看jOOQ执行的SQL语句?

    我使用 jOOQ 从表中查询 插入 更新数据 有没有办法查看JOOQ执行的SQL语句 查找您的日志配置文件 或创建一个 并设置该类的日志级别org jooq tools LoggerListener as debug or trace 例如
  • 在 netty 通道上设置套接字超时

    我有一个 netty 通道 我想在底层套接字上设置超时 默认设置为 0 超时的目的是 如果 15 分钟内没有发生任何事情 则未使用的通道将被关闭 虽然我没有看到任何配置可以这样做 而且套接字本身也对我隐藏 Thanks 如果使用ReadTi
  • 带命名空间的 xpath

    我正在尝试在 php SimpleXML 中使用 xpath 和 xml 文件 其中以下是相关片段
  • 在推出自己的结构时提供辅助函数

    如果我正在开发一个 C 共享库并且我有自己的结构 为了使库使用者更容易对这些结构实例进行常见操作 我可以在结构本身内部提供指向此类函数的函数指针吗 这是一个好的做法吗 使用不同参数并行调用实用函数等多线程处理是否会出现问题 我知道它更接近
  • IntelliJ 错误:发生 JNI 错误,请检查您的安装并重试

    我正在尝试在 intellij 中运行一个项目 每次运行特定的类时 我都会收到以下错误消息 Error A JNI error has occurred please check your installation and try agai
  • 缓冲文件中的一组行并将其存储在 C 中的数组中

    这可能是一种非常低效的方法 但它确实有效 此代码读取一个文件 一次在全局数组中存储 8 行文本 如果可能的话 希望有更好的选择来执行此操作 并分派以进行进一步处理 这是代码 int count 0 global char array buf
  • Flutter 设置状态 onPressed on RaisingButton

    我正在构建一个测验应用程序 它会在用户提交他们选择的答案后显示正确答案的解释 布局上有两个按钮 下一个问题 和 提交答案 在初始状态下 下一个问题 按钮很微妙 因为它不可点击 只有 提交答案 按钮可点击 点击这里查看初始状态的布局 http