📱

【Flutter】Scrollableな領域と固定footerの構造

2022/05/22に公開

動作環境

Flutter 2.10.5 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 5464c5bac7 (5 weeks ago) • 2022-04-18 09:55:37 -0700
Engine • revision 57d3bac3dd
Tools • Dart 2.16.2 • DevTools 2.9.2

固定Footer

footerの位置を固定して、それ以外の要素は必要あればスクロールできるUIの実装が必要そうだったので実装しようとしたら、意外に悩んでしまったので備忘録がてら記載。

sample.dart
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('fixed footer'),
      ),
      body: SafeArea(
        child: Column(
          children: [
            Expanded(
              child: SingleChildScrollView(
                child: Column(
                  children: [
                    _buildHeader(),
                    _buildBody(),
                  ],
                ),
              ),
            ),
            _buildFooter(context),
          ],
        ),
      ),
    );
  }

書いてみるとシンプルな話で、footer意外のスクロールさせる領域は、Expanded > SingleChildScrollViewの下に書いてやれば良い。
headerも固定したいなら、body部分のみSingleChildScrollViewの下に書いてやれば良い。

pagemodalのコードの全容は、🔗から飛べる

page 🔗 modal 🔗

Discussion