iT邦幫忙

2024 iThome 鐵人賽

DAY 18
0
Mobile Development

畢業專題拯救計畫系列 第 18

Flutter中的動畫--Implicit Animations

  • 分享至 

  • xImage
  •  

今天我們要介紹的是 Flutter 中的動畫。動畫對於整個專案來說,會讓畫面看起來更活潑。
動畫又分為隱式動畫和顯式動畫:

隱式動畫

隱式動畫是指那些由框架自動處理的動畫效果。這些動畫的特點是簡單易用,開發者只需要更改某個 widget 的屬性值,Flutter 會自動處理屬性變化的過渡效果,而不需要手動管理動畫的時間軸或狀態。

常見的隱式動畫有:

  • AnimatedContainer
    當 Container 的屬性(如寬度、高度、顏色、邊框、圓角等)發生變化時,AnimatedContainer 會自動處理這些變化。
AnimatedContainer(
  duration: Duration(seconds: 1),
  width: isSelected ? 200.0 : 100.0,
  height: isSelected ? 100.0 : 200.0,
  color: isSelected ? Colors.blue : Colors.red,
  child: FlutterLogo(),
)
  • AnimatedOpacity
    當透明度發生變化時,它會自然地變化成新的透明度。
AnimatedOpacity(
  opacity: isVisible ? 1.0 : 0.0,
  duration: Duration(seconds: 1),
  child: FlutterLogo(),
)
  • AnimatedPadding
    當 Padding 的屬性值變化時,AnimatedPadding 會在指定時間內自動轉換到新的 padding 值。
AnimatedPadding(
  padding: isPadded ? EdgeInsets.all(50.0) : EdgeInsets.all(10.0),
  duration: Duration(seconds: 1),
  child: FlutterLogo(),
)
  • AnimatedAlign
    當對齊方式改變時,它會在指定時間內自然地移動子 widget 到新的對齊位置。
AnimatedAlign(
  alignment: isAligned ? Alignment.topRight : Alignment.bottomLeft,
  duration: Duration(seconds: 1),
  child: FlutterLogo(),
)
  • AnimatedPositioned
    當 Positioned 的屬性(如 top、left、right、bottom)發生變化時,它會在指定時間內自然轉換到新的位置。
Stack(
  children: <Widget>[
    AnimatedPositioned(
      duration: Duration(seconds: 1),
      left: isPositioned ? 50.0 : 150.0,
      top: isPositioned ? 50.0 : 150.0,
      child: FlutterLogo(),
    ),
  ],
)


我們明天見~


上一篇
Flutter中的網路檢測器--connectivity_plus
下一篇
Flutter中的動畫--Explicit Animations
系列文
畢業專題拯救計畫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言