【 Flutter 】Flutter を 基礎 から 学習 ( ウィジェット編 ) part35 Single-child layout widgets

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

前回

【 Flutter 】Flutter を 基礎 から 学習 ( ウィジェット編 ) part34 Single-child layout widgets

引き続き、Single-child layout widgetsについて学びます。

Single-child layout widgets

AspectRatioウィジェット

AspectRatioウィジェットはウィジェットのアスペクト比を保ちます。

縦と横の長さの比率のことをアスペクト比というそうです。
ウィジェットの縦と横の比率を保つんですね。

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

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

var ok = false;

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

class _State extends State {
  @override
  Widget build(BuildContext context) {
    var size = MediaQuery.of(context).size;
    var w = size.width;

    return MaterialApp(
        home: Scaffold(
            appBar: AppBar(
              title: Text('テスト中です。'),
            ),
            body: Column(
              children: [
                Container(
                  color: Colors.blue,
                  alignment: Alignment.center,
                  // 横は限界まで広げ・・・
                  width: double.infinity,
                  // 高さは100。
                  height: 100.0,
                  // 子供のコンテナは16:9を遵守します!
                  child: AspectRatio(
                    aspectRatio: 16 / 9,
                    child: Container(
                      color: Colors.green,
                    ),
                  ),
                ),
                Container(
                  color: Colors.blue,
                  alignment: Alignment.center,
                  // 横は限界まで広げ・・・
                  width: double.infinity,
                  // 高さは100。
                  height: 100.0,
                  // AspectRatioがないコンテナは横にびよーんとのびます。
                  child: Container(
                    color: Colors.red,
                  ),
                ),
              ],
            )));
  }
}

上のウィジェットがAspectRatioを使用したコンテナ、下のウィジェットがAspectRatioを使用していないコンテナです。

最後に

AspectRatio使えば高さや幅を細かく指定しなくてもよいですし移植しやすい気がしますね。
使いまわしもやりやすそうです。

今日はここまで!

 

参考

アスペクト比 (aspect ratio)とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典 (i-3-i.info)

AspectRatio class – widgets library – Dart API (flutter.dev)