質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

Q&A

解決済

1回答

2177閲覧

Flutter 均等に配置するmainAxisAlignmentが効かない

Gento

総合スコア77

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

0グッド

0クリップ

投稿2021/03/31 13:06

#mainAxisAlignmentがが効かない

img説明](1a2d076806b86263594041f91add7b3e.jpeg)
上記画像の3つのテキストを縦に均等に配置したいです。

dart

1 return Scaffold( 2 appBar: AppBar( 3 title: Text('Home'), 4 ), 5 body: Container( 6 padding: EdgeInsets.all(20), 7 child: Column( 8 children: <Widget>[ 9 Card( 10 child: Row( 11 children: <Widget>[ 12 Image.network( 13 'https://image.tmdb.org/t/p/w154//5KYaB1CTAklQHm846mHTFkozgDN.jpg'), 14 Expanded( 15 child: Container( 16 padding: const EdgeInsets.all(10), 17 child: Column( 18 mainAxisAlignment: MainAxisAlignment.spaceEvenly, 19 children: <Widget>[ 20 Container( 21 width: double.infinity, 22 // height: 50, 23 child: Text( 24 'Godzilla vs. Kong', 25 style: Theme.of(context).textTheme.headline6, 26 textAlign: TextAlign.left, 27 ), 28 ), 29 Container( 30 width: double.infinity, 31 // height: 20, 32 child: Text( 33 '2021-03-24', 34 style: TextStyle( 35 color: Colors.grey.shade700, 36 ), 37 textAlign: TextAlign.left, 38 ), 39 ), 40 Container( 41 width: double.infinity, 42 // height: 60, 43 child: Text( 44 'In a time when monsters walk the Earth, humanity’s...', 45 textAlign: TextAlign.left, 46 ), 47 ), 48 ], 49 ), 50 ), 51 ) 52 ], 53 ), 54 ) 55 ], 56 ), 57 ), 58 );

こちらの参考のような形になっているのになぜ効かないのでしょうか??

dart

1Column( 2 mainAxisAlignment: MainAxisAlignment.spaceEvenly, 3 children: <Widget>[ 4 Text("item1"), 5 Text("item2"), 6 Text("item3"), 7 Text("item4"), 8 ], 9),

ColumnchildrenTextではなくContainerだからでしょうか?

だとしたら、Containerの場合はどうすれば良いでしょうか??😨

Flutterのウィジェット難しすぎて禿げそうです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takapiroid

2021/04/01 02:03

添付いただいているスクリーンショットの赤枠はて入力での表示でしょうか? FlutterInspector > Debug Paint すると描画領域が画面上に表示されると思いますが、 そちらで確認するといかがでしょうか。 またその表示を添付いただけると幸いです。
guest

回答1

0

ベストアンサー

Dartでは「特に指定がない場合、子ウィジェットが親ウィジェットの大きさを決める」という、慣れるまでは少しトリッキーに感じる実装が行われます。

そのため、Container宣言時に自身の大きさ(widthheight)を指定しなかった場合は子ウィジェット、この場合は3つのText分の大きさでContainerの大きさが決定されるため、.spaceEvenlyの指定をしても隙間が全く生まれない、という現象が発生します。

対処法は様々ですが、この場合は先にImageを取り出して大きさを指定しておいてあげるのが良いのかなと思いました。

dart

1var image = Image.network( 2 'https://image.tmdb.org/t/p/w154//5KYaB1CTAklQHm846mHTFkozgDN.jpg', 3 height: 200, 4); 5return Scaffold( 6 appBar: AppBar( 7 title: Text('Home'), 8 ), 9 body: Container( 10 padding: EdgeInsets.all(20), 11 child: Column( 12 children: <Widget>[ 13 Card( 14 child: Row( 15 children: <Widget>[ 16 image, //変更点 17 Expanded( 18 child: Container( 19 height: image.height, //変更点 20 padding: const EdgeInsets.all(10), 21 child: Column( 22 mainAxisAlignment: MainAxisAlignment.spaceEvenly, 23 children: <Widget>[ 24 Container( 25 width: double.infinity, 26 // height: 50, 27 child: Text( 28 'Godzilla vs. Kong', 29 style: Theme.of(context).textTheme.headline6, 30 textAlign: TextAlign.left, 31 ), 32 ), 33 Container( 34 width: double.infinity, 35 // height: 20, 36 child: Text( 37 '2021-03-24', 38 style: TextStyle( 39 color: Colors.grey.shade700, 40 ), 41 textAlign: TextAlign.left, 42 ), 43 ), 44 Container( 45 width: double.infinity, 46 // height: 60, 47 child: Text( 48 'In a time when monsters walk the Earth, humanity’s...', 49 textAlign: TextAlign.left, 50 ), 51 ), 52 ], 53 ), 54 ), 55 ), 56 ], 57 ), 58 ) 59 ], 60 ), 61 ), 62);

試していませんがこんな感じでいけるのではないでしょうか。
質問者様のコードからの変更点はimage変数で先に画像部分を定義し、Expanded内のContainerでその画像の高さheight: image.heightを指定してあげた部分となります。

投稿2021/04/03 08:19

tmsah

総合スコア101

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Gento

2021/04/04 04:32

>Dartでは「特に指定がない場合、子ウィジェットが親ウィジェットの大きさを決める」という、慣れるまでは少しトリッキーに感じる実装が行われます。 こちらの助言で少しだけ理解できるようになりました! 参考になるコードまでありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問