如何指定动态的持续时间?

时间:2019-10-02 13:14:09

标签: flutter dart

我想动态增加持续时间,但是Dart仅接受const关键字:

int ms=level*100+200;
const oneSec = const Duration(milliseconds: ms);

我该如何解决这个问题?

2 个答案:

答案 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