flutter

Transform组件

2021-07-06  本文已影响0人  卢融霜

Transform可以在其子组件绘制时对其应用一些矩阵变换来实现一些特效。
Matrix4是一个4D矩阵,通过它我们可以实现各种矩阵操作。
案例:

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';

class TransFormView extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return new _TransFormView();
  }
}

class _TransFormView extends State<TransFormView> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Transform"),
      ),
      body: Column(
        children: [
          Padding(
            padding: EdgeInsets.all(20),
            child: Center(
              child: Container(
                color: Colors.black,
                child: Transform(
                  alignment: Alignment.center,
                  transform: new Matrix4.skewY(0.3),
                  child: Container(
                    padding: EdgeInsets.all(8.r),
                    color: Colors.blueAccent,
                    child: Text("TransFrom Y轴倾斜0.3"),
                  ),
                ),
              ),
            ),
          ),
          Padding(
            padding: EdgeInsets.all(20),
            child: Center(
              child: Container(
                color: Colors.black,
                child: Transform.rotate(
                  alignment: Alignment.center,
                  angle: 1,
                  child: Container(
                    padding: EdgeInsets.all(8.r),
                    color: Colors.blueAccent,
                    child: Text("TransFrom 旋转"),
                  ),
                ),
              ),
            ),
          ),
          Padding(
            padding: EdgeInsets.all(20),
            child: Center(
              child: Container(
                color: Colors.black,
                child: Transform.scale(
                  alignment: Alignment.center,
                  scale: 2,
                  child: Container(
                    padding: EdgeInsets.all(8.r),
                    child: Text(
                      "TransFrom 放大两倍",
                      style: TextStyle(color: Colors.blueAccent),
                    ),
                  ),
                ),
              ),
            ),
          ),
          Padding(
            padding: EdgeInsets.all(20),
            child: Text(
                "Transform,变换是应用绘制阶段,而不是应用在布局阶段,所以无论子组件何种变换,其占用空间大小都是在屏幕上的位置固定不变的"),
          ),
          Padding(
            padding: EdgeInsets.all(20),
            child: Text.rich(TextSpan(children: [
              TextSpan(
                  text: "RotatedBox",
                  style:
                      TextStyle(fontWeight: FontWeight.bold, fontSize: 20.r)),
              TextSpan(
                  text:
                      "和Transform.rotate功能相似,它们都可以对子组件进行旋转变换,但是有一点不同:RotatedBox的变换是在layout阶段,会影响在子组件的位置和大小。")
            ])),
          )
        ],
      ),
    );
  }
}
image.png

apk下载地址

https://www.pgyer.com/IUVS
上一篇下一篇

猜你喜欢

热点阅读