在開發(fā)Flutter過(guò)程中,如果需要開發(fā)炫酷的動(dòng)畫效果椎麦,需要用到動(dòng)畫組件拆座。接下來(lái)我們介紹一下AnimatedOpacity組件。
一笋敞、AnimatedOpacity簡(jiǎn)介
AnimatedOpacity組件是一個(gè)可以控制widget透明度的組件碱蒙,我們可以用這個(gè)組件實(shí)現(xiàn)widget動(dòng)畫的顯示和隱藏,并且調(diào)整組件的透明度夯巷。我們通過(guò)繼承樹可以看出赛惩,該組件繼承自ImplicitlyAnimatedWidget,是一個(gè)StatefulWidget趁餐。
隱式動(dòng)畫的基類為ImplicitlyAnmatedWidget喷兼,它是一個(gè)抽象方法,有12種動(dòng)畫組件都是繼承自它后雷,它的構(gòu)造方法也是比較簡(jiǎn)單季惯,只有四個(gè)參數(shù),下面先來(lái)看下各個(gè)參數(shù)的作用臀突。
curve參數(shù)表示的是動(dòng)畫執(zhí)行的過(guò)程方式勉抓,默認(rèn)為線性方式;
duration參數(shù)表示的是動(dòng)畫執(zhí)行的時(shí)長(zhǎng)候学,此參數(shù)為必傳參數(shù)藕筋;
onEnd參數(shù)表示的是動(dòng)畫結(jié)束的回調(diào)。
二梳码、隱式動(dòng)畫【官方解釋】
通過(guò)使用 Flutter 的?動(dòng)畫庫(kù)隐圾,你可以為 UI 中的組件添加運(yùn)動(dòng)和創(chuàng)建視覺(jué)效果伍掀。你可以使用庫(kù)中的一套組件來(lái)管理動(dòng)畫,這些組件統(tǒng)稱為隱式動(dòng)畫或隱式動(dòng)畫組件翎承,其名稱源于它們都實(shí)現(xiàn)了?ImplicitlyAnimatedWidget?類硕盹。使用隱式動(dòng)畫,你可以通過(guò)設(shè)置一個(gè)目標(biāo)值叨咖,驅(qū)動(dòng) widget 的屬性進(jìn)行動(dòng)畫變換瘩例;每當(dāng)目標(biāo)值發(fā)生變化時(shí),屬性會(huì)從舊值逐漸更新到新值甸各。通過(guò)這種方式垛贤,隱式動(dòng)畫內(nèi)部實(shí)現(xiàn)了動(dòng)畫控制,從而能夠方便地使用— 隱式動(dòng)畫組件會(huì)管理動(dòng)畫效果趣倾,用戶不需要再進(jìn)行額外的處理聘惦。
隱式動(dòng)畫最大的特點(diǎn)為不需要傳入動(dòng)畫器,我們可以從構(gòu)造方法處得知儒恋,用戶操作AnimatedOpacity組件的時(shí)候善绎,不需要去操作動(dòng)畫器。直接使用類似一個(gè)Container就行诫尽。
三禀酱、使用方式
直接像使用Container那樣添加到就行了
Container(child:AnimatedOpacity(
? ? ? ? ? ? ? ? ? ? ? ? ? opacity: opacity, // 使用動(dòng)畫值設(shè)置透明度
? ? ? ? ? ? ? ? ? ? ? ? ? duration: const Duration(seconds: 1),
? ? ? ? ? ? ? ? ? ? ? ? ? child: YZRightCardSecondwidget()))),
通過(guò)改變opacity的值,直接 state.setState();可以改變此控件的透明度牧嫉。