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

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

前回

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

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

Multi-child layout widgets

Expandedウィジェット

flexプロパティ

flexプロパティは「重みづけ」です。
Expandedウィジェットが複数あった場合、flexプロパティの設定を行っておけば数値が大きい方が領域を多く占有します。
つまり数値が大きい方がよりびよーんと伸びるわけです。

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,
          child: Column(
            children: <Widget>[
              box(),
              Expanded(
                child: Container(
                  width: 100,
                  height: 200,
                  child: DecoratedBox(
                    decoration: BoxDecoration(color: Colors.red),
                  ),
                ),
                flex: 1,
              ),
              Expanded(
                child: Container(
                  width: 100,
                  height: 200,
                  child: DecoratedBox(
                    decoration: BoxDecoration(color: Colors.indigo),
                  ),
                ),
                flex: 2,
              ),
            ],
          ),
        ),
      ),
    );
  }

  Widget box({
    Color color = Colors.green,
    Alignment alignment = Alignment.center,
  }) {
    return Align(
        alignment: alignment,
        child: SizedBox(
            width: 100,
            height: 100,
            child: DecoratedBox(
              decoration: BoxDecoration(
                color: color,
              ),
            )));
  }
}

 

flexプロパティの大きい青のウィジェットが一番面積を多く占有しています。

 

最後に

flexプロパティを使えばサイズを気にしないでガンガン配置できそうです。

今日はここまで!