【 Flutter 】Flutter を 基礎 から 学習 ( ウィジェット編 ) part76 Painting and effects

基礎 から 学ぶ Flutter 」という書籍で  学習 したことを ブログでアウトプットしていこうと思います。今回は ウィジェット編 ( part76 )です。

前回

【 Flutter 】Flutter を 基礎 から 学習 ( ウィジェット編 ) part75 Painting and effects

引き続き、Painting and effectsについて学びます。

Painting and effects

Transformウィジェット

transformプロパティ

transformプロパティはウィジェットにいろいろな効果を与えることができるようです。

傾きを変える
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:transparent_image/transparent_image.dart';

void main() {
  runApp(new MaterialApp(home: new MyApp()));
}

class MyApp extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _State();
  }
}

class _State extends State<MyApp> {
  int _index = 0;
  @override
// pubspec.yamlのdependenciesに「transparent_image: ^2.0.0」を追加しておきます。
// pub getを忘れずに!
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
      appBar: AppBar(
        title: Text('テスト中です。'),
      ),
      body: Transform(
          transform: Matrix4.skewX(0.3),
          child: FadeInImage.memoryNetwork(
            placeholder: kTransparentImage,
            image: 'https://picsum.photos/250?image=9',
            fadeInDuration: const Duration(milliseconds: 200),
            width: 100,
            height: 100,
            fit: BoxFit.cover,
          )),
    ));
  }
}

 

ウィジェットが傾くのではなく、画像そのものが傾くんですね。

3D表示
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:transparent_image/transparent_image.dart';

void main() {
  runApp(new MaterialApp(home: new MyApp()));
}

class MyApp extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _State();
  }
}

class _State extends State<MyApp> {
  int _index = 0;
  @override
// pubspec.yamlのdependenciesに「transparent_image: ^2.0.0」を追加しておきます。
// pub getを忘れずに!
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
      appBar: AppBar(
        title: Text('テスト中です。'),
      ),
      body: Transform(
          transform: Matrix4.identity()
            ..setEntry(3, 2, 0.01)
            ..rotateX(0.6),
          child: FadeInImage.memoryNetwork(
            placeholder: kTransparentImage,
            image: 'https://picsum.photos/250?image=9',
            fadeInDuration: const Duration(milliseconds: 200),
            width: 100,
            height: 100,
            fit: BoxFit.cover,
          )),
    ));
  }
}

 

3DというかZ軸に歪んだように見えますね😆

最後に

この機能はいったいどこに需要が・・・。

今日はここまで!