1. ホーム
  2. flutter

[解決済み] Flutter Layout Row / Column - 幅を共有し、高さを拡張する

2023-03-24 20:38:43

質問

Flutterのレイアウトでまだ少し困っています。

今、私は3つのウィジェットで利用可能なスペースを共有したい、象限儀のレイアウトで。 幅は均等に共有されます (これは 2 つの Expanded ウィジェットでうまく機能します)、高さも自動的に調整したいので widget3.height == widget1.height + widget2.height . の内容が widget3 の方が大きい場合、私は widget1widget2 で高さを調整し、その逆も同様です。

これはFlutterでも可能なのでしょうか?

どのように解決するのですか?

以下のサイトをご覧ください。 IntrinsicHeight ルート行をラップすると、期待通りの効果が得られます。

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(title: Text('Rows & Columns')),
        body: RowsAndColumns(),
      ),
    );
  }
}

class RowsAndColumns extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: const EdgeInsets.only(top: 100.0),
      child: IntrinsicHeight(
        child: Row(crossAxisAlignment: CrossAxisAlignment.stretch, children: [
          Expanded(
            child: Column(children: [
              Container(height: 120.0, color: Colors.yellow),
              Container(height: 100.0, color: Colors.cyan),
            ]),
          ),
          Expanded(child: Container(color: Colors.amber)),
        ]),
      ),
    );
  }
}

列のコンテナの高さを調整すると、右側のコンテナもそれに合わせてサイズが変更されます。

https://gist.github.com/mjohnsullivan/c5b661d7b3b4ca00599e8ef87ff6ac61