在全球范围内减少Flutter中的动画

cre*_*not 4 dart flutter flutter-animation

一个函数或方法颤振框架,其可用于ajust每小部件的动画/运行速度.

可以使用我认为的服务.

我忘记了如何调用它,找不到任何描述它的资源 +我不知道我曾经发现它的位置.

没有更多的信息要提供,因为这只是一个简单的一个班轮.我希望有人知道我在说什么.

was*_*syl 17

您需要设置timeDilation静态属性:

import 'package:flutter/scheduler.dart' show timeDilation;
// you can also import the whole file:
// import 'package:flutter/scheduler.dart'; 

...

timeDilation = 2.0; // Will slow down animations by a factor of two
Run Code Online (Sandbox Code Playgroud)

我正在使用show我,import因为它限制了对库中某些声明的导入.在这种情况下,我只希望能够timeDilationscheduler.dart库中使用,而不是其他任何东西.由于调度程序是非常低级的东西,因此不污染命名空间是有意义.还有hide相反的效果(只隐藏某些声明).

您可以在应用程序的任何位置设置此项,即使在main函数中也是如此:

import 'package:flutter/scheduler.dart' show timeDilation;

void main() {
  timeDilation = 3.0;
  runApp(new MyApp());
}
Run Code Online (Sandbox Code Playgroud)

或者在你按下的处理程序中

onPressed: () => timeDilation = 2.0
Run Code Online (Sandbox Code Playgroud)

这是一个全局静态属性,因此您无需调用setState以便进行更改.

  • >非常明显的是,不需要调用setState - 可能适合你,不适合所有人; >动画没有连接到状态 - 动画连接到状态,调度不是,不是吗?>我认为onPressed是一个奇怪的补充.也许删除它 - 我很抱歉我的答案包含的信息不仅仅是来自'package:flutter/scheduler.dart'的`timeDilation`.我认为一个例子对于寻找有关时间膨胀的信息的人来说非常有用.为什么它太多而且解释`show`不是? (7认同)
  • 对不起,如果我也公开表示否定,我只是想让答案更容易获得.对于`show`,它限制了对库中某些声明的导入 - 在这种情况下,我只希望能够使用`scheduler.dart`库中的`timeDilation`,而不是其他任何东西.由于调度程序是非常低级的东西,因此不污染命名空间是有意义的.还有"hide"具有相反的效果(仅隐藏某些声明) (5认同)