作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
这是我在类里面使用的简单动画
controller = AnimationController(vsync: this, duration: Duration(milliseconds: 200));
offset = Tween<Offset>(begin: Offset.zero, end: Offset(0.0, -1.0)).animate(controller);
controller.forward();
因为我只能在类内管理动画 Controller ,例如 forward
、reverse
,我尝试将此 Controller 移动到类外,就像另一个类一样 NotificationBarController
,有没有人可以帮我实现这个解决方案?
例如
controller = NotificationBarController();
controller.forward();
源代码
class NotificationBar extends StatefulWidget {
final Widget contentWidget;
final Widget barWidget;
NotificationBar({@required this.contentWidget, @required this.barWidget});
@override
State<StatefulWidget> createState() => NotificationBarState();
}
class NotificationBarState extends State<NotificationBar> with SingleTickerProviderStateMixin {
AnimationController controller;
Animation<Offset> offset;
@override
void initState() {
super.initState();
controller = AnimationController(vsync: this, duration: Duration(milliseconds: 200));
// offset = Tween<Offset>(begin: Offset.zero, end: Offset(1.0, 0.0)).animate(controller); from right
offset = Tween<Offset>(begin: Offset.zero, end: Offset(0.0, -1.0)).animate(controller);
controller.forward();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
),
);
}
}
我厌倦了实现它的类(class),但这是错误的
class NotificationBarController extends ChangeNotifier {
NotificationBarController({@required TickerProvider vsync}): _animationController = AnimationController(vsync: vsync);
Animation<double> get animation => _animationController?.view ?? kAlwaysCompleteAnimation;
Animation<double> get state => _animationController?.view ?? kAlwaysCompleteAnimation;
}
最佳答案
您可以使用 GlobalKey。首先,您需要像这样实例化和存储它 final key = GlobalKey<NotificationBarState>()
,那么您需要将其传递给 NotificationBar
构造函数调用 super
用 key 。然后您可以通过调用 key.currentState.someMethod()
访问状态及其成员。 .
然而,整个想法对我来说并不像 Flutter 方式。我建议订阅 NotificationBarState 中的一些流或 changeNotifier 并触发动画作为对新事件或通知的 react
关于Flutter 从课外管理动画 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56923999/
我是一名优秀的程序员,十分优秀!