【问题标题】:How to display results of my if statement如何显示我的 if 语句的结果
【发布时间】:2020-12-27 02:53:07
【问题描述】:

我正在做一个小型颤振项目,该项目应该根据你输入的分数给你打分。

我在我的 onPressed (flat button) 中添加了一个 if 语句,说如果输入的数字大于或等于一个参数(例如 70),那么它应该返回语句“恭喜你有一个 A。我想对所有其他年级都这样做。”

问题 在代码中,当我点击提交按钮时出现错误

*"方法 >= 在 null 上被调用。" *

附:

  • 我是初学者,这是涉及问题的代码部分。 textfield 区域具有 onChanged 方法和我的名为 input 的变量。输入接收放入 textfield 的任何内容。

  • 下一部分是Flatbutton,它应该在按下时执行该功能

  • 最后,有一个文本小部件,它显示我的第二个变量的内容,称为输出。只要有不同的成绩,它就会显示不同的陈述。

               TextField(
                        decoration: InputDecoration(
                        enabledBorder: OutlineInputBorder(
                          borderRadius: BorderRadius.circular(40),
                        ),
                      focusedBorder:OutlineInputBorder(
                        borderRadius: BorderRadius.circular(40),
                      ) ,
                      hintText: "Submit your grade",
                        hintStyle: TextStyle(color: Colors.black,fontSize: 16,),
                        filled: true,
                        fillColor: Colors.grey[300],
                        ),
                        onChanged: ( score){
                          input = score as int;
                        },
                      ),
               FlatButton(
                        onPressed: (){
                          if (input >= 70 ){
                            setState(() {
                              output="Congrats! You have an A";
                            });
                            if (input<=69) {
                              setState(() {
                                output="Well done you have an B! Keep Working Hard";
                              });
                              if(input<=50){
                                setState(() {
                                  output="Sorry you have failed.";
                                });
                              }else{
                                setState(() {
                                  output="Invalid value.Please try again";

                                });
                              }
                            }}
                          },
                        child: Container(
                          width: double.infinity,
                          decoration: BoxDecoration(
                              color: Colors.amber,
                              borderRadius: BorderRadius.circular(50)
                          ),
                          padding: EdgeInsets.all(20),
                          margin: EdgeInsets.symmetric(horizontal: 100),
                          child: Center(child: Text("Submit",style: 
                            TextStyle(fontSize: 16,),)),
                        ),
                      ),
                      SizedBox(height: 80,),
                      Text(output,style: TextStyle(fontSize: 25),)

错误信息

════════手势捕获的异常 ══════════════════════════════════════════════════ ═════════════ 处理手势时引发以下 NoSuchMethodError: 在 null 上调用了方法“>=”。 接收方:空 尝试调用:>=(70)

当异常被抛出时,这是堆栈:
#0 Object.noSuchMethod (dart:core-patch/object_patch.dart:53:5)
#1 _homeState.build。 (包:flutter_app1/screens/home.dart:151:37)
#2 _InkResponseState._handleTap
(包:flutter/src/material/ink_well.dart:779:19)
#3 _InkResponseState.build.
(包:flutter/src/material/ink_well.dart:862:36)
#4 GestureRecognizer.invokeCallback
(包:flutter/src/gestures/recognizer.dart:182:24)
...
处理程序:“onTap”
识别器:TapGestureRecognizer#99edd
debugOwner: GestureDetector
状态:准备好
赢得竞技场
finalPosition: 偏移量(168.9, 353.1)
finalLocalPosition: 偏移量(168.9, 44.1)
按钮:1
发送点击向下

最后,如果我使用containergesture detector 而不是提交按钮会发生什么变化?我知道我会使用 onTap 而不是 onPressed 但还有其他的吗?

【问题讨论】:

  • "score as int" 不是强制转换,它基本上是类型重新标记,并且不会更改基础数据。要从 String 获取 int,请使用 int.parse(theString)。
  • 非常感谢。它适用于第一个 if 函数,但其​​余的不起作用。如果我输入一个小于 70 的数字,它不会显示相应的输出。我做错了什么?
  • 我希望你声明int input = 0。如果没有,就这样声明吧。

标签: android flutter dart


【解决方案1】:

您应该像这样使用 int.parse,而不是使用“as int”:

input  = int.parse(score);

【讨论】:

    猜你喜欢
    • 2015-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-14
    • 1970-01-01
    • 2020-06-19
    相关资源
    最近更新 更多