您好,登錄后才能下訂單哦!
本篇內容主要講解“Flutter怎么利用SizeTransition實現組件飛入效果”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Flutter怎么利用SizeTransition實現組件飛入效果”吧!
繼續 Transition
系列動畫組件的介紹,本篇來介紹 SizeTransition
。SizeTransition
用于更改子組件的尺寸來實現動畫。支持垂直方向或水平方向修改動畫,同時尺寸更改的起始位置可以從頂部、中部、底部(垂直方向)或左側、中間、右側(水平方向)開始。通過這些特性,我們可以構建組件飛入的效果。
SizeTransition
的構造方法定義如下。
const SizeTransition({ Key? key, this.axis = Axis.vertical, required Animation<double> sizeFactor, this.axisAlignment = 0.0, this.child, })
參數對應的說明如下:
axis
:枚舉,vertical
標識縱向更改組件尺寸,即更改組件高度;horizontal
表示橫向更改組件尺寸,即更改組件寬度。
sizeFactor
:即控制組件尺寸變化的 Animation
對象。實際上在動畫過程中就是組件尺寸的寬度(horizontal
)或高度(vertical
)乘以**Animation**的值。
axisAlignment
:即動畫過程中,子組件的對齊位置,默認為0.0,是從中間開始更改尺寸;當axis
為vertical
時,-1.0代表頂部對齊開始動畫(即尺寸從上到下開始變大);當 axis
為horizontal
時,開始的方向和文本的反向有關(TextDirection.ltr
還是 TextDirection.rtl
),當文本為從左到右時(TextDirection.ltr,默認
),-1.0表示從左側開始動畫(即尺寸從左到右開始變大)。
對于我們的飛入動畫來說,我們要實現從左向右飛入動畫效果,因此需要設置 axis
為水平方向,然后 axisAligment
為右側。對于圖片,找一個橫向飛行的超人,然后加上動畫后就可以實現超人飛入的效果了。完整源碼如下:
class SizeTransitionDemo extends StatefulWidget { SizeTransitionDemo({Key? key}) : super(key: key); @override _SizeTransitionDemoState createState() => _SizeTransitionDemoState(); } class _SizeTransitionDemoState extends State<SizeTransitionDemo> with SingleTickerProviderStateMixin { late AnimationController _controller = AnimationController(duration: const Duration(seconds: 3), vsync: this) ..repeat(); //使用自定義曲線動畫過渡效果 late Animation<double> _animation = CurvedAnimation( parent: _controller, curve: Curves.fastLinearToSlowEaseIn); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('SizeTransition'), brightness: Brightness.dark, backgroundColor: Colors.blue, ), body: SizeTransition( child: Center( child: Image.asset( 'images/superman.png', width: 300.0, height: 300.0, ), ), sizeFactor: _animation, axis: Axis.horizontal, axisAlignment: 1.0, ), ); } @override void dispose() { _controller.stop(); _controller.dispose(); super.dispose(); } }
我們可以設置動畫從中間開始,這樣會有一種卷軸打開的效果,比如我們找一幅卷軸畫來看看效果。
這個動畫的實現代碼如下:
Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('SizeTransition'), brightness: Brightness.dark, backgroundColor: Colors.blue, ), body: Container( alignment: Alignment.center, child: SizeTransition( child: Image.asset( 'images/juanzhou.png', ), sizeFactor: _animation, axis: Axis.horizontal, axisAlignment: 0.0, ), ), ); }
到此,相信大家對“Flutter怎么利用SizeTransition實現組件飛入效果”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。