【发布时间】: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
发送点击向下
最后,如果我使用container 和gesture detector 而不是提交按钮会发生什么变化?我知道我会使用 onTap 而不是 onPressed 但还有其他的吗?
【问题讨论】:
-
"score as int" 不是强制转换,它基本上是类型重新标记,并且不会更改基础数据。要从 String 获取 int,请使用 int.parse(theString)。
-
非常感谢。它适用于第一个 if 函数,但其余的不起作用。如果我输入一个小于 70 的数字,它不会显示相应的输出。我做错了什么?
-
我希望你声明
int input = 0。如果没有,就这样声明吧。