2017-05-10 35 views
0

我想從我的導航器自定義動畫。這是我目前的路線如何:顫振 - 自定義路由轉換導致黑屏

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); 
} 

而這項工作完全正常,從右向左淡入。但是現在我想要從左到右的過渡。如果我將開始改爲topLeft並結束到topRight,它會變得瘋狂並最終變成黑屏。

有沒有另一個選項,我必須使用才能做到這一點?在此先感謝

回答

4

您希望新路線開始完全離屏左邊,這是一個FractionalOffset -1.0,0.0。你希望它最終得到0.0,0.0的FractionalOffset,a.k.a FractionalOffset.topLeft。改變你的構造函數的參數來FractionalOffsetTween如下:

new FractionalOffsetTween(
    begin: const FractionalOffset(-1.0, 0.0), 
    end: FractionalOffset.topLeft, 
) 
+0

哇,真棒工作!謝謝。你知道我怎樣才能改變我的褪色頁面上的應用程序欄上的標準箭頭,使它面向右側,並位於右側? – OhMad

+0

將這些參數用於您的AppBar。領導:新的Container(), 動作:[ 新IconButton( 圖標:新圖標( Theme.of(上下文).platform == TargetPlatform.iOS Icons.arrow_forward_ios :Icons.arrow_forward), onPressed: (){ Navigator.pop(context); }, ) –

+0

太棒了,感謝您的幫助! – OhMad