トリッキーなスタックまたは列が中央に配置され、フラッターでレイアウト間にスペースが生じる

okwaves2024-01-25  7

コンテンツが 2 つあり、高さのあるサイズのボックスであるとしましょう。これらを ContentA と ContentB と呼びます。列を使用して、間にスペースを入れて終端を揃えることができます。

Column(
 crossAxisAlignment: CrossAxisAlignment.stretch,
 mainAxisAlignment: MainAxisAlignment.end,
 children: [
  ContentA(),
  SizedBox(height: 10),
  ContentB(),
 ],
)

しかし、一部の画面 (大きな画面) では、これらの値により ContentA が下に残りすぎます。次に、ContentA を中央に配置し、ContentB をスタックとともに下部に残しました。

Stack(
 children: [
  Column(
   mainAxisAlignment: MainAxisAlignment.center,
   children: [
    ContentA(),
   ],
  ),
  Positioned(
   left: 0, 
   bottom: 0, 
   right: 0, 
   child: ContentB(),
  ),
 ],
)

ただし、小さい画面では、この構成では ContentA と ContentB の間にスペースが残りません (ContentB は下限内にある必要があります)。

問題は、ContentA をできるだけ中央に配置し、ContentB との間に少なくともある程度のスペースを残す方法を教えてください。



------------------------

次のように、スタックを使用せずに列内で拡張ウィジェットとフレキシブル ウィジェットを使用する必要があります。

Column(
        crossAxisAlignment: CrossAxisAlignment.stretch,
        mainAxisAlignment: MainAxisAlignment.end,
        children: [
          Expanded(child: Container(color: Colors.red,)),
          Flexible(flex:0,child: SizedBox(height: 10)),
          Expanded(child: Container(color: Colors.blue,)),
        ],

    );

3

必要に応じて、最初のコンテナから展開されたコンテナを削除します。

– アモンC

2020 年 9 月 4 日 22:25

それは私には効果がありません、私は望んでいます両方のコンテンツの高さを維持し、ContentA を残りの上部の中央に配置するのではなく、列が使用しているすべてのスペースの中央に配置したいと考えています。

– レオナルド・ダ・シルバ

2020 年 9 月 4 日 22:36

スケッチを送っていただけますか?

– アモンC

2020 年 9 月 4 日 22:46

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。