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

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

前回

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

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

Multi-child layout widgets

Column, Rowウィジェット

MainAxisAlignment

MainAxisAlignment.spaceEvenly

MainAxisAlignment.spaceEvenlyは上下を含めて均等に並べます。
全体で空白が均等に・・・という言葉でよいでしょうか。

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

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

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

class _State extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('テスト中です。'),
        ),
        body: Container(
          alignment: Alignment.center,
          width: 100,
          color: Colors.yellow,
          child: Column(
            mainAxisAlignment: MainAxisAlignment.spaceEvenly, // ★
            children: [
              myContainer(name: "First"),
              myContainer(name: "Second"),
              myContainer(name: "Third"),
            ],
          ),
        ),
      ),
    );
  }

  Container myContainer({String name = "hoge", double size = 50}) {
    return Container(
      margin: const EdgeInsets.all(8),
      width: size,
      height: size,
      color: Colors.grey,
      child: Text(
        name,
        //style: Theme.of(context).textTheme.headline6,
      ),
    );
  }
}

結果です。

MainAxisAlignment.spaceBetween

MainAxisAlignment.spaceBetweenはまず一番上と一番下のウィジェットが決まります。
その間を均等にウィジェットが並ぶ感じです。

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

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

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

class _State extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('テスト中です。'),
        ),
        body: Container(
          alignment: Alignment.center,
          width: 100,
          color: Colors.yellow,
          child: Column(
            mainAxisAlignment: MainAxisAlignment.spaceBetween, // ★
            children: [
              myContainer(name: "First"),
              myContainer(name: "Second"),
              myContainer(name: "Third"),
            ],
          ),
        ),
      ),
    );
  }

  Container myContainer({String name = "hoge", double size = 50}) {
    return Container(
      margin: const EdgeInsets.all(8),
      width: size,
      height: size,
      color: Colors.grey,
      child: Text(
        name,
        //style: Theme.of(context).textTheme.headline6,
      ),
    );
  }
}

結果です。

最後に

均等に並べるはよく使いそうですね。
自分で計算しなくても勝手に並んでくれるのは便利!

今日はここまで!