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 部件获取手指移动的距离,并添加双击复位操作。


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

查看所有标签

猜你喜欢:

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

Web Data Mining

Web Data Mining

Bing Liu / Springer / 2006-12-28 / USD 59.95

Web mining aims to discover useful information and knowledge from the Web hyperlink structure, page contents, and usage data. Although Web mining uses many conventional data mining techniques, it is n......一起来看看 《Web Data Mining》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

SHA 加密
SHA 加密

SHA 加密工具