全局减慢 Flutter 中的动画

Posted

技术标签:

【中文标题】全局减慢 Flutter 中的动画【英文标题】:Slowing down animations in Flutter globally 【发布时间】:2018-12-09 12:55:59 【问题描述】:

Flutter框架中有一个函数或方法,可以用来调整每个widget的动画/运行速度。

可能使用我认为的服务

我只是忘记了如何称呼它,找不到任何描述它的资源 + 我不知道我曾经在哪里发现它。

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

【问题讨论】:

你是指flutter Gallery应用中的慢速motion option吗? @RaoufRahiche 如果我知道它,我可以查看那个来源 :) 我想说我知道timeDilation 一段时间前,但忘记了包和属性名称:)跨度> 我们可以使用timeDilation属性来控制Droggable不被DropTarget接受时的反馈吗? 【参考方案1】:

您需要设置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

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

您可以在应用中的任何位置进行设置,甚至在主函数中:

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

void main() 
  timeDilation = 3.0;
  runApp(new MyApp());

或在您按下的处理程序中:

onPressed: () => timeDilation = 2.0

这是一个全局静态属性,因此您无需调用 setState 即可进行更改。

【讨论】:

> 很明显 setState 不需要被调用——也许对你来说,不是对每个人; > 动画与状态无关——动画与状态有关,调度不是,不是吗? > 我认为 onPressed 是一个奇怪的补充。也许删除它 - 对不起,我的答案包含更多信息,而不仅仅是来自 'package:flutter/scheduler.dart'. I think an example is useful for people looking for information about time dilation in general. Why is it too much and explaining show` 的 timeDilation 不是吗? 对不起,我没有消极的意思。我只是认为有些部分很奇怪,例如onPressed 完全断章取义,我仍然不知道 show 在你的代码中做了什么:) 你问到调度问题,是的,这当然是我想说的,因为这是动画的一部分动画。现在给你一个赞成票,但我仍然想知道show 做了什么:) 我不想让你解释show 的概念,最好解释一下你为什么选择包含它(我是认真的如果你知道它的作用就很明显了)。 对不起,如果我也公开否定,我只是想让答案更容易获得。至于show,它将导入限制为从库中的某些声明——在这种情况下,我只想能够使用scheduler.dart 库中的timeDilation,仅此而已。由于调度程序是非常低级的东西,因此不污染命名空间是有意义的。还有hide,效果相反(只隐藏某些声明)

以上是关于全局减慢 Flutter 中的动画的主要内容,如果未能解决你的问题,请参考以下文章

谷歌移动广告实施减慢了 Flutter App

Flutter 之 动画1

Flutter 中的动画布局更改

Flutter动画性能, 官方flutter基础动画在真机上能跑到20-30%CPU

Flutter动画

ios原生嵌套Flutter模块