中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Flutter怎么實現不同縮放動畫效果

發布時間:2022-06-22 13:53:07 來源:億速云 閱讀:212 作者:iii 欄目:開發技術

本篇內容主要講解“Flutter怎么實現不同縮放動畫效果”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Flutter怎么實現不同縮放動畫效果”吧!

    需求背景

    組件縮放可以向著一個方向進行縮放,放大列表中某一個Cell期望它是向后進行放大而非組件中心點開始縮放。具體效果如下圖所示:

    Flutter怎么實現不同縮放動畫效果

    可縮放組件介紹

    ScaleTransition

    ScaleTransition具體實現如下代碼,設置AnimationController控制器若需要增加數值操作可以再增加Animate再調用forward方法執行。

    PS:動畫實現在以前文章中有介紹過

    動畫控制器
    _scaleAnimationController = AnimationController(
      vsync: this,
      duration: Duration(milliseconds: 3000),
    );
    scale = Tween(begin: 1.0, end: 1.29).animate(_scaleAnimationController);
    
    ScaleTransition(
      scale: scale,
      alignment: Alignment.centerLeft,
      child: Container(
        margin: EdgeInsets.all(50),
        color: Colors.yellow,
        height: 200,
        width: 100,
      ),
    )
    
    
    _scaleAnimationController.forward();

    如果希望修改縮放方向,可以為ScaleTransition添加alignment配置。例如centerLeft表示組件靠左向右縮放。

    ScaleTransition(
      scale: scale,
      alignment: Alignment.centerLeft,
      child: Container(
        margin: EdgeInsets.all(50),
        color: Colors.yellow,
        height: 200,
        width: 100,
      ),
    )

    如圖所示默認縮放是以組件中心點進行縮放效果,設置alignment則向著相反位置進行縮放。

    Flutter怎么實現不同縮放動畫效果

    ScaleTransition并不能滿足需求功能,無法做到向著一個方向進行縮放動畫。

    SizeTransition

    SizeTransition是以更改子組件尺寸實現動畫效果,支持垂直或水平方向動畫。

    AnimationController _animationController =
        AnimationController(vsync: this, duration: Duration(seconds: 1));
    _animationController.value = 1.0;
    Animation<double>
      _animation = CurvedAnimation(
        parent: _animationController, curve: Curves.fastLinearToSlowEaseIn);
    
    SizeTransition(
      sizeFactor: _animation,
      axis: Axis.horizontal,
      child: Container(
        color: Colors.blue,
        height: 100,
        width: 100,
        alignment: Alignment.center,
        child: Text("SizeTransition"),
      ),
    )

    Flutter怎么實現不同縮放動畫效果

    但在需求要求上還是不滿足期望的結果,SizeTransition更適用在實現展開或是飛入的動畫效果。

    AnimatedSize

    AnimatedSize是自帶動畫效果的組件,修改組件尺寸大小就能夠執行縮放動畫。

    GestureDetector(
      child: AnimatedSize(
        duration: Duration(seconds: 2),
        child: Container(
          color: Colors.red,
          width: 100,
          height: height,
          alignment: Alignment.center,
          child: Container(
            height: 50,
            width: 50,
            color: Colors.yellow,
            child: Text("AnimatedSize"),
          ),
        ),
      ),
      onTap: () {
        height = 150;
        width = 150;
        setState(() {});
      },
    ),

    Flutter怎么實現不同縮放動畫效果

    AnimatedSize的問題在于它只作用于自身,若子布局設置了自身的尺寸就不會隨著父組件大小而變化。

    AnimatedBuilder

    AnimatedBuilder主要結合Transform.scale組件設置alignmentAlignment.centerLeft即可對組件實現向右縮放動畫。

    AnimationController _scaleAnimationController = AnimationController(
      vsync: this,
      duration: Duration(milliseconds: 3000),
    );
    Animation<double> scale = Tween(begin: 1.0, end: 1.29).animate(_scaleAnimationController);
    
     AnimatedBuilder(
      animation: scale,
      builder: (context, widget) {
        return Transform.scale(
          alignment: Alignment.centerLeft,
          scale: scale.value,
          child: widget,
        );
      },
      child: GestureDetector(
        child: Container(
          margin: EdgeInsets.only(left: 15, right: 15),
          color: Colors.blue,
          width: 100,
          height: 50,
          child: Text("AnimatedBuilder"),
        ),
        onTap: (){
          _scaleAnimationController.forward();
        },
      ),
    );

    Flutter怎么實現不同縮放動畫效果

    AnimatedBuilder方式實現縮放需要為組件縮放預留好足夠空間進行縮放放大操作,避免組件縮放后與其他組件出現重疊現象。

    到此,相信大家對“Flutter怎么實現不同縮放動畫效果”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    湟中县| 宁国市| 台湾省| 布尔津县| 阜城县| 三都| 吉水县| 莱阳市| 宁远县| 昌邑市| 桂东县| 佳木斯市| 施甸县| 申扎县| 安阳市| 孟州市| 丽水市| 大足县| 福建省| 尉氏县| 巩留县| 海林市| 金川县| 类乌齐县| 苏尼特左旗| 德格县| 东港市| 南城县| 武冈市| 凤山县| 桂平市| 南澳县| 社旗县| 微山县| 龙江县| 张家口市| 荔波县| 婺源县| 河北区| 安康市| 桃江县|