如何将元素设置到SingleCildScrollView的底部?

时间:2019-02-19 09:18:49

标签: flutter flutter-layout

我创建了一个与列配合良好的屏幕,但是由于键盘的缘故,我需要滚动屏幕。我正在使用SingleChildScrollView,但是Column的MainAxisAligment在Scrollable内部不起作用。

主要问题是-我需要将Widget设置在Scrollable的底部

我用谷歌搜索了这个问题并发现了这个问题: Flutter - SingleChildScrollView interfering in columns 但是,这个具体问题没有解决方案。

我的代码:

SingleChildScrollView(
        padding: const EdgeInsets.symmetric(horizontal: 16),
        child: new Column(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: <Widget>[
            Form(
              child: Column(
                children: <Widget>[
                  buildTextField(
                    'E-mail',
                    (text) {},
                    controller: _loginController,
                    textColor: Theme.of(context).buttonColor,
                    hintColor: Theme.of(context).hintColor,
                    margin: EdgeInsets.only(top: 16),
                  ),
                  buildTextField(
                    'Password',
                    (text) {},
                    focus: _textSecondFocusNode,
                    controller: _passwordController,
                    onSubmit: (_) => presenter.login(_loginController.text, _passwordController.text),
                    textColor: Theme.of(context).buttonColor,
                    hintColor: Theme.of(context).hintColor,
                    letterSpacing: 15,
                    icon: InkWell(
                      onTap: () {
                      },
                      child: Image.asset('assets/ic_eye.png'),
                    ),
                    margin: const EdgeInsets.only(top: 16),
                    padding: const EdgeInsets.only(left: 16, top: 4, bottom: 4),
                    obscureText: true,
                  ),
                ],
              ),
            ),
            Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: [
                Padding(
                  padding: const EdgeInsets.only(top: 0),
                  child: InkWell(
                    child: Text(
                      'Registration',
                      style: TextStyle(color: Theme.of(context).buttonColor, decoration: TextDecoration.underline),
                    ),
                    onTap: () =>
                        Navigator.push(context, CupertinoPageRoute(builder: (context) => StartRegistrationScreen())),
                  ),
                ),
                Buttons.buildRaisedButton(
                  Text(
                    'Login',
                    style: TextStyle(color: Colors.white, fontSize: 17, fontFamily: 'SFUIDisplay'),
                  ),
                  (){},
                  color: Theme.of(context).buttonColor,
                  disabledColor: Theme.of(context).disabledColor,
                  margin: const EdgeInsets.only(top: 16),
                ),
                Padding(
                  padding: const EdgeInsets.only(top: 16, bottom: 16),
                  child: Text(
                    'Forgot password',
                    style: TextStyle(
                      color: Theme.of(context).buttonColor,
                      decoration: TextDecoration.underline,
                    ),
                  ),
                )
              ],
            )
          ],
        ),
      );

我想要类似this之类的内容,因为它具有键盘可滚动的内容。 但是我有this

1 个答案:

答案 0 :(得分:-1)

将展开的窗口小部件包裹在顶部的列窗口小部件中,这样它将一直扩展到底部。然后,将您的登录按钮置于其下方。键盘将不会覆盖您的登录按钮小部件。