0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

初めてのflutter layouts編_RowとColumn [Memo for neko]

Last updated at Posted at 2021-04-20

flutterのレイアウト(layout)の中でも基本的なRowとColumnについて

(...flutterでアプリを作成しているときに、忘れてしまうので...:robot:)

対象:
・初めてflutterの人:angel:
・少し慣れたけどレイアウト気になる人初めての人:angel:
・アプリの見た目を整えたい人:angel:

==環境==
・PC:Macbook Pro (Retina)
・macOS Catalina
・Flutter 2.0.4
・Dart 2.12.2
・iOSのシュミレータ

==目次==
1.flutterの新規作成と起動
2.アプリのベース作成
3.Row and Column のレイアウト

1.flutterの新規作成と起動

・flutterで新プロジェクト作成(my_appの部分が自分のアプリ名)
terminal
flutter create my_app
cd my_app

・iOSのシュミレータ起動

terminal
open -a Simulator

・flutterの起動

terminal
flutter run

2.アプリのベース作成

libの中にある、main.dartの中身を以下に変更
main.dart
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Hi Layout Sample',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Hello Layout Sample'),
        ),
        body: Center(
          child: Text('Hello Flutter'),
        ),
      ),
    );
  }
}

こんな感じの画面に。
スクリーンショット 2021-04-20 17.41.41.png

ベース完成⭐️
(後は、いろいろ試してみる)

3.Row and Column のレイアウト

Rowのケース例 ) main.dartを以下に変更すると
main.dart
import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Hi Layout Sample',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Hello Layout Sample'),
        ),
        body: Center(
          child: Row(
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            children: [
              Icon(Icons.favorite, size: 30),
              Icon(Icons.favorite, size: 30),
              Icon(Icons.favorite, size: 30),
            ],
          ),
        ),
      ),
    );
  }
}

こんな感じの画面に。
スクリーンショット 2021-04-20 17.53.25.png

ちょっと説明:
child: 以降を Text から Row に変更し、
children: 以降で、アイコンの ♡ を設定(ここは画像でもなんでも)
さらに、Row 部分を Column に変えると、♡の並びも変わる。

Columnのケース例 )

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Hi Layout Sample',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Hello Layout Sample'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            children: [
              Icon(Icons.favorite, size: 30),
              Icon(Icons.favorite, size: 30),
              Icon(Icons.favorite, size: 30),
            ],
          ),
        ),
      ),
    );
  }
}

こんな感じの画面に。
スクリーンショット 2021-04-20 18.01.04.png

mainAxisAlignment部分について

mainAxisAlignment: MainAxisAlignment.xxx 部分を変化させる

mainAxisAlignment: MainAxisAlignment.start:画面のはじめ

main.dart
child: Column(
            mainAxisAlignment: MainAxisAlignment.start,
            children: [
              Icon(Icons.favorite, size: 30),
              Icon(Icons.favorite, size: 30),
              Icon(Icons.favorite, size: 30),
            ],
          ),

こんな感じの画面に、それぞれ"Row", "Column"
スクリーンショット 2021-04-20 20.53.06.png

mainAxisAlignment: MainAxisAlignment.center:真ん中

main.dart
child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Icon(Icons.favorite, size: 30),
              Icon(Icons.favorite, size: 30),
              Icon(Icons.favorite, size: 30),
            ],
          ),

こんな感じの画面に、それぞれ"Row", "Column"
スクリーンショット 2021-04-20 20.53.12.png

mainAxisAlignment: MainAxisAlignment.end:画面の終わり

main.dart
child: Column(
            mainAxisAlignment: MainAxisAlignment.end,
            children: [
              Icon(Icons.favorite, size: 30),
              Icon(Icons.favorite, size: 30),
              Icon(Icons.favorite, size: 30),
            ],
          ),

こんな感じの画面に、それぞれ"Row", "Column"
スクリーンショット 2021-04-20 20.53.18.png

mainAxisAlignment: MainAxisAlignment.spaceBetween:子たちの間のスペース均等

main.dart
child: Column(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: [
              Icon(Icons.favorite, size: 30),
              Icon(Icons.favorite, size: 30),
              Icon(Icons.favorite, size: 30),
            ],
          ),

こんな感じの画面に、それぞれ"Row", "Column"
スクリーンショット 2021-04-20 21.45.11.png

mainAxisAlignment: MainAxisAlignment.spaceEvenly:はじめ・おわり・子の間のスペース均等

main.dart
child: Column(
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            children: [
              Icon(Icons.favorite, size: 30),
              Icon(Icons.favorite, size: 30),
              Icon(Icons.favorite, size: 30),
            ],
          ),
スクリーンショット 2021-04-20 21.45.16.png

mainAxisAlignment: MainAxisAlignment.spaceAround:並べた子の間のスペース均等

main.dart
child: Column(
            mainAxisAlignment: MainAxisAlignment.spaceAround,
            children: [
              Icon(Icons.favorite, size: 30),
              Icon(Icons.favorite, size: 30),
              Icon(Icons.favorite, size: 30),
            ],
          ),

こんな感じの画面に、それぞれ"Row", "Column"
スクリーンショット 2021-04-20 20.53.34.png

RowとColumnの基本的な部分は、以上を組み合わせて。
もっと興味ある方は、参考資料からどうぞ:)

==参考==
・Flutterの公式 https://flutter.dev/docs
・Dartで使えるiconの種類 https://api.flutter.dev/flutter/material/Icons-class.html
・レイアウト類ですごくおすすめ(英語表記)https://medium.com/flutter-community/flutter-layout-cheat-sheet-5363348d037e

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?