i get int?使用getInt()方法从SharedPreferences类中获取变量。我要把这个放进?作为持续时间对象的参数,但我需要有一个int。我能做什么?这是代码:
int? duration = ParametersHelper.getDuration();
Future.delayed(const Duration(milliseconds: duration));
这是ParametersHelper中的getDuration()方法:
static int? getDuration() {
return _pref.getInt("Duration");
}
谢谢!
您可以通过显式地告诉dart编译器,尽管变量可以为空,但我保证它不是空的,但在使用它时要小心,从而覆盖此行为。
int duration = ParametersHelper.getDuration()!; // using the ! operator
Future.delayed(const Duration(milliseconds: duration));
第二个选项是使用??操作符,表示如果值为空,赋另一个值
int duration = ParametersHelper.getDuration() ?? 2; // if null assign 2
Future.delayed(const Duration(milliseconds: duration));
你可以这样写:
int? duration = ParametersHelper.getDuration();
Future.delayed( Duration(milliseconds: duration!));
可以写成null assertion operator (!)
'int?'表示该值可以是int或null。SharedPreferences返回int?在
_pref.getInt("Duration")
因为如果没有键"Duration"存储在
_pref.setInt("Duration", 4)
在这种情况下,它将返回null。
如果您确定在名为"Duration"的键中存储有一个int值在调用getDuration()函数之前,您可以使用"!"(条件属性访问操作符)
int? duration = getDuration();
Future.delayed(Duration(milliseconds: duration!));
"!"是一个省道运算符,用于将可空类型转换为非可空类型。只有当你绝对确定值永远不会为空时才使用它,即在键& Duration"中总是存储一个int值。在调用它之前,在首选项中,不要将它与条件属性访问操作符(?)混淆。