我想动态增加持续时间,但是Dart仅接受const
关键字:
int ms=level*100+200;
const oneSec = const Duration(milliseconds: ms);
我该如何解决这个问题?
答案 0 :(得分:1)
如果您想了解const
的工作原理,可以refer to this question。
根据您的情况,您不能使用 const
Duration
,因为 dynamic 值无法在编译时确定。这意味着您将必须删除const
,例如使用final
:
int ms = level * 100 + 200;
final oneSec = Duration(milliseconds: ms);
答案 1 :(得分:0)
Duration
对象是不可变的。构造Duration
后,您将无法对其进行更改。如果要使用更长的持续时间,则每次都需要创建一个新的持续时间。例如:
void repeatedSetStateWithDelay(int level) {
setState(() {
int ms = level * 100 + 200;
Future.delayed(
Duration(milliseconds: ms),
() => repeatedSetStateWithDelay(level + 1),
);
});
}
我不确定const
与您的问题有什么关系;在这种情况下,您不应该使用const
。