一尘不染

如何将小部件放置在SingleChildScrollView的底部?

flutter

我需要使用SingleChildScrollView才能使用keyboard_actions,以便可以在iOS的键盘上方放置一个“完成”按钮(此刻使用数字键盘)

SingleChildScrollView将有一列作为一个孩子,然后一个按钮被放置在底部。我尝试过使用LayoutBuilder来将高度提高到SingleChildScrollView

LayoutBuilder(
      builder: (BuildContext context, BoxConstraints viewportConstraints) {
    return SingleChildScrollView(
        child: ConstrainedBox(
            constraints:
                BoxConstraints(minHeight: viewportConstraints.maxHeight),
            child: Column(
                crossAxisAlignment: CrossAxisAlignment.stretch,
                mainAxisSize: MainAxisSize.max,
                children: <Widget>[
                  Column(),
                  // Spacer() ?
                  FlatButton()
                ])));
  });

我尝试将BoxConstraintswith与该maxHeight属性一起使用,但是最终当键盘出现时,该小部件不会消失。

旁注:脚手架同时具有resizeToAvoidBottomInsetresizeToAvoidBottomPadding设置为true(默认值)


阅读 821

收藏
2020-08-13

共1个答案

一尘不染

问题SingleChildScrollView在于shrikwrap它是孩子。因此,要在两者之间使用自动尺寸小部件-
我们需要使用MediaQuery来获取屏幕高度并SizedBox展开- SingleChildScrollView

这里的按钮将在屏幕底部。

工作代码:

double height = MediaQuery.of(context).size.height;

    SingleChildScrollView(
          child: SizedBox(
              height: height,
              child: Column(
                  crossAxisAlignment: CrossAxisAlignment.stretch,
                  mainAxisSize: MainAxisSize.max,
                  children: <Widget>[
                    Column(
                      children: <Widget>[
                        Text('Dummy'),
                        Text('Dummy'),
                        Text('Dummy'),
                      ],
                    ),
                    Spacer(),
                    FlatButton(
                      onPressed: () {},
                      child: Text('Demo'),
                    )
                  ])),
        )
2020-08-13