Flutter中的3D透视效果

栏目: IOS · Android · 发布时间: 6年前

内容简介:最近通过一篇博客学习了Flutter中的3D透视效果。效果是跟随手指的触摸,界面做3D转动。主要用到了

最近通过一篇博客学习了Flutter中的3D透视效果。

Flutter中的3D透视效果
Flutter中的3D透视效果

效果是跟随手指的触摸,界面做3D转动。

// v2: add Gesture detector
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Perspective',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key}) : super(key: key); // changed

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  Offset _offset = Offset.zero; // changed

  @override
  Widget build(BuildContext context) {
    return Transform(
        // Transform widget
        transform: Matrix4.identity() //生成一个单位矩阵
          ..setEntry(3, 2, 0.001) // 透视
          ..rotateX(0.01 * _offset.dy) // changed
          ..rotateY(-0.01 * _offset.dx), // changed
        alignment: FractionalOffset.center,
        child: GestureDetector(
          // new
          onPanUpdate: (details) =>
              setState(() => _offset += details.delta), //与屏幕接触并移动的指针再次移动
          onDoubleTap: () => setState(() => _offset = Offset.zero),
          child: _defaultApp(context),
        ));
  }

  _defaultApp(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              '3D效果',
            ),
          ],
        ),
      ),
    );
  }
}

复制代码

主要用到了 TransformTransform 是用来做矩阵变换的。

首先通过 Matrix4.identity() 来生成一个单位矩阵。然后通过 ..setEntry(3, 2, 0.001) 来将矩阵的第3行第2列设置为0.001。作用是类似设置物体到摄像机的距离,越远物体看起来越小,越近看起来物体越大。

..rotateX..rotateY 是分别修改XY轴的数值,这里乘0.01是做了一个数值压缩。(因为是以Z轴为轴做旋转,所以改变的是X和Y轴的值,Z轴是垂直于屏幕方向的轴)。

最后通过 GestureDetector 部件获取手指移动的距离,并添加双击复位操作。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Four

The Four

Scott Galloway / Portfolio / 2017-10-3 / USD 28.00

NEW YORK TIMES BESTSELLER USA TODAY BESTSELLER Amazon, Apple, Facebook, and Google are the four most influential companies on the planet. Just about everyone thinks they know how they got there.......一起来看看 《The Four》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具