最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Flutter利用SizeTransition實現(xiàn)組件飛入效果

 更新時間:2022年04月13日 08:50:19   作者:島上碼農(nóng)  
本文將為大家介紹SizeTransition,SizeTransition用于更改子組件的尺寸來實現(xiàn)動畫,支持垂直方向或水平方向修改動畫。本文將利用其實現(xiàn)組件飛入效果,需要的可以參考一下

前言

繼續(xù) Transition 系列動畫組件的介紹,本篇來介紹 SizeTransition。SizeTransition 用于更改子組件的尺寸來實現(xiàn)動畫。支持垂直方向或水平方向修改動畫,同時尺寸更改的起始位置可以從頂部、中部、底部(垂直方向)或左側(cè)、中間、右側(cè)(水平方向)開始。通過這些特性,我們可以構(gòu)建組件飛入的效果。

SizeTransition 介紹

SizeTransition 的構(gòu)造方法定義如下。

const?SizeTransition({
??Key??key,
??this.axis?=?Axis.vertical,
??required?Animation<double>?sizeFactor,
??this.axisAlignment?=?0.0,
??this.child,
})?

參數(shù)對應的說明如下:

axis:枚舉,vertical 標識縱向更改組件尺寸,即更改組件高度;horizontal 表示橫向更改組件尺寸,即更改組件寬度。

sizeFactor:即控制組件尺寸變化的 Animation 對象。實際上在動畫過程中就是組件尺寸的寬度(horizontal)或高度(vertical)乘以**Animation**的值。

axisAlignment:即動畫過程中,子組件的對齊位置,默認為0.0,是從中間開始更改尺寸;當axisvertical時,-1.0代表頂部對齊開始動畫(即尺寸從上到下開始變大);當 axis 為horizontal 時,開始的方向和文本的反向有關(TextDirection.ltr 還是 TextDirection.rtl),當文本為從左到右時(TextDirection.ltr,默認),-1.0表示從左側(cè)開始動畫(即尺寸從左到右開始變大)。

應用

對于我們的飛入動畫來說,我們要實現(xiàn)從左向右飛入動畫效果,因此需要設置 axis 為水平方向,然后 axisAligment 為右側(cè)。對于圖片,找一個橫向飛行的超人,然后加上動畫后就可以實現(xiàn)超人飛入的效果了。完整源碼如下:

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

使用 SizeTransition 實現(xiàn)其他動畫效果

我們可以設置動畫從中間開始,這樣會有一種卷軸打開的效果,比如我們找一幅卷軸畫來看看效果。

這個動畫的實現(xiàn)代碼如下:

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

總結(jié)

本篇介紹了使用 SizeTransition 控制組件尺寸更改來實現(xiàn)飛入或展開的動畫效果。SizeTransition 也可以用于那種滑入滑出的動畫場合,比如列表元素的插入使用下滑入,列表元素的刪除使用上滑出。

以上就是Flutter利用SizeTransition實現(xiàn)組件飛入效果的詳細內(nèi)容,更多關于Flutter組件飛入的資料請關注腳本之家其它相關文章!

相關文章

最新評論

龙山县| 凉城县| 邵阳县| 衡水市| 龙山县| 建始县| 安宁市| 阿拉善左旗| 鄂伦春自治旗| 论坛| 从化市| 高青县| 台前县| 武夷山市| 库车县| 宁武县| 克东县| 洪洞县| 阿拉善左旗| 固镇县| 汝州市| 奉新县| 永安市| 姜堰市| 浙江省| 柯坪县| 汝州市| 鹿泉市| 建水县| 林州市| 灵寿县| 博爱县| 太白县| 沐川县| 晋州市| 湖南省| 乌兰浩特市| 府谷县| 陆丰市| 华蓥市| 扎鲁特旗|