Flutter - 自定义路由转换导致黑屏

OhM*_*Mad 4 routes dart flutter

我正在尝试从我的导航器自定义动画。这就是我当前的路线:

class HelpRoute<T> extends MaterialPageRoute<T> {
  HelpRoute({
    WidgetBuilder builder,
  }): super(builder: builder);

  @override
  Widget buildTransitions(BuildContext context,
      Animation<double> animation,
      Animation<double> secondaryAnimation,
      Widget child)
  {
    if (settings.isInitialRoute)
      return child;

    return new SlideTransition(
      position: new FractionalOffsetTween(
        begin: FractionalOffset.topRight,
        end: FractionalOffset.topLeft,
      )
      .animate(
        new CurvedAnimation(
          parent: animation,
          curve: Curves.ease,
        )
      ),
      child: child,
    );
  }

  @override Duration get transitionDuration => const Duration(milliseconds: 400);
}
Run Code Online (Sandbox Code Playgroud)

这工作得很好,并且从右到左淡入。但现在我想要从左到右的过渡。如果我将开始更改为左上,将结束更改为右上,它就会变得疯狂并最终出现黑屏。

我是否必须使用其他选项才能使其发挥作用?提前致谢

Col*_*son 5

您希望新路线完全从屏幕左侧开始,即 FractionalOffset 为 -1.0、0.0。您希望它最终的 FractionalOffset 为 0.0, 0.0,又名FractionalOffset.topLeft。将构造函数参数更改为FractionalOffsetTween如下:

new FractionalOffsetTween(
    begin: const FractionalOffset(-1.0, 0.0),
    end: FractionalOffset.topLeft,
)
Run Code Online (Sandbox Code Playgroud)