Flutter學(xué)習(xí)筆記18-變換(Transform)

Transform可以在其子組件繪制時(shí)對(duì)其實(shí)現(xiàn)一些特效。

1.平移

Transform.translate接收一個(gè)offset參數(shù)崇裁,可以在繪制時(shí)沿x、y軸對(duì)子組件平移指定的距離束昵。代碼示例:

class TranslateDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return DecoratedBox(
      decoration: BoxDecoration(color: Colors.red),
      // 默認(rèn)原點(diǎn)為左上角拔稳,右移20像素,向下平移5像素
      child: Transform.translate(
        offset: Offset(20.0, 5.0),
        child: Text('Hello Flutter'),
      ),
    );
  }
}

代碼運(yùn)行效果如下:

2.旋轉(zhuǎn)

Transform.rotate可以對(duì)子組件進(jìn)行旋轉(zhuǎn)變換锹雏。代碼示例:

class rotateDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return DecoratedBox(
      decoration: BoxDecoration(color: Colors.red),
      // 旋轉(zhuǎn)90度
      child: Transform.rotate(
        angle: math.pi / 2,
        child: Text('Hello Flutter'),
      ),
    );
  }
}

代碼運(yùn)行效果如下:

RotatedBox和Transform.rotate功能相似巴比,它們都可以對(duì)子組件進(jìn)行旋轉(zhuǎn)變換,不同的是RotatedBox的變換是在layout階段礁遵,會(huì)影響在子組件的位置和大小轻绞。Transform的變換是應(yīng)用在繪制階段,而并不是應(yīng)用在布局(layout)階段佣耐,所以無(wú)論對(duì)子組件應(yīng)用何種變化政勃,其占用空間的大小和在屏幕上的位置都是固定不變的,因?yàn)檫@些是在布局階段就確定的兼砖。代碼示例如下:

class RotatedBoxDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        DecoratedBox(
          decoration: BoxDecoration(color: Colors.red),
          child: RotatedBox(
            quarterTurns: 1,
            child: Text('Hello Flutter'),
          ),
        ),
        Text('Hello', style: TextStyle(color: Colors.orange, fontSize: 20.0))
      ],
    );
  }
}

代碼運(yùn)行效果圖如下:

由于RotatedBox是作用于layout階段奸远,所以子組件會(huì)旋轉(zhuǎn)90度(而不只是繪制的內(nèi)容)。

3.縮放

Transform.scale可以對(duì)子組件進(jìn)行縮小或放大讽挟。代碼示例:

class ScaleDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return DecoratedBox(
      decoration: BoxDecoration(color: Colors.red),
      child: Transform.scale(
        scale: 1.5,
        child: Text('Hello Flutter'),
      ),
    );
  }
}

代碼運(yùn)行效果如下:

4.矩陣變換

Matrix4是一個(gè)4D矩陣懒叛,通過它我們可以實(shí)現(xiàn)各種矩陣操作。代碼示例:

class Matrix4Demo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Container(
      color: Colors.black,
      child: Transform(
        alignment: Alignment.topRight,
        transform: Matrix4.skewY(0.3), // 沿Y軸傾斜0.3弧度
        child: Container(
          padding: EdgeInsets.all(8.0),
          color: Color(0xFFE8581C),
          child: Text('Apartment for rent!'),
        ),
      ),
    );
  }
}

代碼運(yùn)行效果如下:

代碼傳送門

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末耽梅,一起剝皮案震驚了整個(gè)濱河市薛窥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌眼姐,老刑警劉巖诅迷,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異众旗,居然都是意外死亡竟贯,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門逝钥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)屑那,“玉大人拱镐,你說我怎么就攤上這事〕旨剩” “怎么了沃琅?”我有些...
    開封第一講書人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蜘欲。 經(jīng)常有香客問我益眉,道長(zhǎng),這世上最難降的妖魔是什么姥份? 我笑而不...
    開封第一講書人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任郭脂,我火速辦了婚禮,結(jié)果婚禮上澈歉,老公的妹妹穿的比我還像新娘展鸡。我一直安慰自己,他們只是感情好埃难,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開白布莹弊。 她就那樣靜靜地躺著,像睡著了一般涡尘。 火紅的嫁衣襯著肌膚如雪忍弛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評(píng)論 1 289
  • 那天考抄,我揣著相機(jī)與錄音细疚,去河邊找鬼。 笑死川梅,一個(gè)胖子當(dāng)著我的面吹牛惠昔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播挑势,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼镇防,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了潮饱?” 一聲冷哼從身側(cè)響起来氧,我...
    開封第一講書人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎香拉,沒想到半個(gè)月后啦扬,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡凫碌,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年扑毡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盛险。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瞄摊,死狀恐怖勋又,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情换帜,我是刑警寧澤楔壤,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站惯驼,受9級(jí)特大地震影響蹲嚣,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜祟牲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一隙畜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧说贝,春花似錦议惰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)哗总。三九已至几颜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間讯屈,已是汗流浹背蛋哭。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留涮母,地道東北人谆趾。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像叛本,于是被迫代替她去往敵國(guó)和親沪蓬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348