我有一个 Widget,它基于某些用户交互修改 PageRoute 的 AnimationController。
它通过
ModalRoute.of(context)?.controller
执行此操作,虽然它按预期工作,但它被标记为对受保护成员的无效使用。
static void animateController(BuildContext context, double value){
route?.controller // flag
?.animateTo(
value.clamp(0, 1),
curve: Curves.easeOutCubic,
duration: Duration(milliseconds: 360),
)
}
// flag :: The member 'controller' can only be used within instance members of subclasses of 'package:flutter/src/widgets/routes.dart'.dart(invalid_use_of_protected_member)
虽然这仍然有效,但显然这不是正确的方法。我可以构建一个自定义的
PageRoute<T>
,一个包含控制器的单独的InheritedWidget
,然后创建一个静态函数,但是当它与ModalRoute
一起使用时,这似乎完全没有必要。
我想我得到这个标志是因为控制器被注释为受保护。在子小部件中访问和调整此控制器的最佳方式是什么。