Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 小部件不会在颤振中进入屏幕底部?_Flutter_Dart_Flutter Layout - Fatal编程技术网

Flutter 小部件不会在颤振中进入屏幕底部?

Flutter 小部件不会在颤振中进入屏幕底部?,flutter,dart,flutter-layout,Flutter,Dart,Flutter Layout,所以我试着让注册按钮在屏幕的底部中心对齐。我对flifter比较陌生,我想知道是否有一种方法可以很容易地做到这一点,或者我需要重写很多代码吗?这是我到目前为止所拥有的。正如您所看到的,我将它放在Align()中,但它只指向填充区域的底部中心。我想我要做的是使外部容器()成为整个屏幕的高度,但我也不知道如何做到这一点。如果你有办法做到这一点,请让我知道。谢谢 import 'package:flutter/material.dart'; class LoginSignupScreen exten

所以我试着让注册按钮在屏幕的底部中心对齐。我对flifter比较陌生,我想知道是否有一种方法可以很容易地做到这一点,或者我需要重写很多代码吗?这是我到目前为止所拥有的。正如您所看到的,我将它放在Align()中,但它只指向填充区域的底部中心。我想我要做的是使外部容器()成为整个屏幕的高度,但我也不知道如何做到这一点。如果你有办法做到这一点,请让我知道。谢谢

import 'package:flutter/material.dart';

class LoginSignupScreen extends StatefulWidget {
  @override
  _LoginSignupScreenState createState() => _LoginSignupScreenState();
}

class _LoginSignupScreenState extends State<LoginSignupScreen> {
  // TRUE: register page, FALSE: login page
  bool _register = true;

  void _changeScreen() {
    setState(() {
      // sets it to the opposite of the current screen
      _register = !_register;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Container(
//      height:,
      child: Column(
//      mainAxisAlignment: MainAxisAlignment.start,
        children: <Widget>[
          Padding(
            padding: const EdgeInsets.all(20),
            child: Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                ButtonBar(
                  children: <Widget>[
                    MaterialButton(
                      onPressed: _changeScreen,
                      child: Text('REGISTER'),
                    ),
                    MaterialButton(
                      onPressed: _changeScreen,
                      child: Text('LOGIN'),
                    ),
                  ],
                ),
              ],
            ),
          ),
          Padding(
            padding: EdgeInsets.all(20),
            child: Column(
              children: <Widget>[
                TextField(
                  decoration: InputDecoration(
                      border: InputBorder.none, hintText: 'E-MAIL'),
                ),
                TextField(
                  decoration: InputDecoration(
                      border: InputBorder.none, hintText: 'USERNAME'),
                ),
                TextField(
                  decoration: InputDecoration(
                      border: InputBorder.none, hintText: 'PASSWORD'),
                )
              ],
            ),
          ),
          Align(
            alignment: FractionalOffset.bottomCenter,
            child: MaterialButton(
              onPressed: () => {},
              child: Text(_register ? 'REGISTER' : 'LOGIN'),
            ),
          ),
        ],
      ),
    );
  }
}
导入“包装:颤振/材料.省道”;
类LoginSignupScreen扩展StatefulWidget{
@凌驾
_LoginSignupScreenState createState()=>\u LoginSignupScreenState();
}
类_LoginSignupScreenState扩展状态{
//TRUE:注册页面,FALSE:登录页面
bool_寄存器=真;
void _changeScreen(){
设置状态(){
//将其设置为与当前屏幕相反的位置
_寄存器=!\u寄存器;
});
}
@凌驾
小部件构建(构建上下文){
返回容器(
//身高:,
子:列(
//mainAxisAlignment:mainAxisAlignment.start,
儿童:[
填充物(
填充:常数边集。全部(20),
孩子:排(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
钮扣杆(
儿童:[
材料按钮(
按下按钮:\u更改屏幕,
子:文本(‘寄存器’),
),
材料按钮(
按下按钮:\u更改屏幕,
子项:文本('LOGIN'),
),
],
),
],
),
),
填充物(
填充:边缘设置。全部(20),
子:列(
儿童:[
文本字段(
装饰:输入装饰(
边框:InputBorder.none,hintText:“电子邮件”),
),
文本字段(
装饰:输入装饰(
边框:InputBorder.none,hintText:“用户名”),
),
文本字段(
装饰:输入装饰(
边框:InputBorder.none,hintText:“密码”),
)
],
),
),
对齐(
对齐:分馏Loffset.bottomCenter,
子:材质按钮(
按下:()=>{},
子项:文本(_register?'register':'LOGIN'),
),
),
],
),
);
}
}
试试这个:

import 'package:flutter/material.dart';

class LoginSignupScreen extends StatefulWidget {
  @override
  _LoginSignupScreenState createState() => _LoginSignupScreenState();
}

class _LoginSignupScreenState extends State<LoginSignupScreen> {
  // TRUE: register page, FALSE: login page
  bool _register = true;

  void _changeScreen() {
    setState(() {
      // sets it to the opposite of the current screen
      _register = !_register;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
//      height:,
        child: Column(
//      mainAxisAlignment: MainAxisAlignment.start,
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: <Widget>[
            Padding(
              padding: const EdgeInsets.all(20),
              child: Row(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  ButtonBar(
                    children: <Widget>[
                      MaterialButton(
                        onPressed: _changeScreen,
                        child: Text('REGISTER'),
                      ),
                      MaterialButton(
                        onPressed: _changeScreen,
                        child: Text('LOGIN'),
                      ),
                    ],
                  ),
                ],
              ),
            ),
            Padding(
              padding: EdgeInsets.all(20),
              child: Column(
                children: <Widget>[
                  TextField(
                    decoration: InputDecoration(
                        border: InputBorder.none, hintText: 'E-MAIL'),
                  ),
                  TextField(
                    decoration: InputDecoration(
                        border: InputBorder.none, hintText: 'USERNAME'),
                  ),
                  TextField(
                    decoration: InputDecoration(
                        border: InputBorder.none, hintText: 'PASSWORD'),
                  )
                ],
              ),
            ),
            Column(
              mainAxisAlignment: MainAxisAlignment.end,
              children: <Widget>[
                MaterialButton(
                  onPressed: () => {},
                  child: Text(_register ? 'REGISTER' : 'LOGIN'),
                ),
              ],
            )
          ],
        ),
      ),
    );
  }
}
导入“包装:颤振/材料.省道”;
类LoginSignupScreen扩展StatefulWidget{
@凌驾
_LoginSignupScreenState createState()=>\u LoginSignupScreenState();
}
类_LoginSignupScreenState扩展状态{
//TRUE:注册页面,FALSE:登录页面
bool_寄存器=真;
void _changeScreen(){
设置状态(){
//将其设置为与当前屏幕相反的位置
_寄存器=!\u寄存器;
});
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
主体:容器(
//身高:,
子:列(
//mainAxisAlignment:mainAxisAlignment.start,
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
填充物(
填充:常数边集。全部(20),
孩子:排(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
钮扣杆(
儿童:[
材料按钮(
按下按钮:\u更改屏幕,
子:文本(‘寄存器’),
),
材料按钮(
按下按钮:\u更改屏幕,
子项:文本('LOGIN'),
),
],
),
],
),
),
填充物(
填充:边缘设置。全部(20),
子:列(
儿童:[
文本字段(
装饰:输入装饰(
边框:InputBorder.none,hintText:“电子邮件”),
),
文本字段(
装饰:输入装饰(
边框:InputBorder.none,hintText:“用户名”),
),
文本字段(
装饰:输入装饰(
边框:InputBorder.none,hintText:“密码”),
)
],
),
),
纵队(
mainAxisAlignment:mainAxisAlignment.end,
儿童:[
材料按钮(
按下:()=>{},
子项:文本(_register?'register':'LOGIN'),
),
],
)
],
),
),
);
}
}

您可以设置
容器的高度,以覆盖您提到的整个屏幕,然后只需将
对齐
小部件包装在一个
展开的
小部件中,即可填满可用空间

请尝试以下代码:

Widget build(BuildContext context) {
    return Container(
      height: MediaQuery.of(context).size.height,
      child: Column(
        children: <Widget>[
          Padding(
            padding: const EdgeInsets.all(20),
            child: Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                ButtonBar(
                  children: <Widget>[
                    MaterialButton(
                      onPressed: _changeScreen,
                      child: Text('REGISTER'),
                    ),
                    MaterialButton(
                      onPressed: _changeScreen,
                      child: Text('LOGIN'),
                    ),
                  ],
                ),
              ],
            ),
          ),
          Padding(
            padding: EdgeInsets.all(20),
            child: Column(
              children: <Widget>[
                TextField(
                  decoration: InputDecoration(
                      border: InputBorder.none, hintText: 'E-MAIL'),
                ),
                TextField(
                  decoration: InputDecoration(
                      border: InputBorder.none, hintText: 'USERNAME'),
                ),
                TextField(
                  decoration: InputDecoration(
                      border: InputBorder.none, hintText: 'PASSWORD'),
                )
              ],
            ),
          ),
          Expanded(
            child: Align(
              alignment: Alignment.bottomCenter,
              child: MaterialButton(
                onPressed: () => {},
                child: Text(_register ? 'REGISTER' : 'LOGIN'),
              ),
            ),
          )
        ],
      ),
    );
  }
小部件构建(构建上下文){
返回容器(
高度:MediaQuery.of(context).size.height,
子:列(
儿童:[
填充物(
填充:常数边集。全部(20),
孩子:排(
mainAxisAlignment:mainAxisAlignment.center,
儿童:[
钮扣杆(
儿童:[
材料按钮(
按下按钮:\u更改屏幕,
子:文本(‘寄存器’),
),
材料按钮(
按下按钮:
        Expanded(
          child: Align(
            alignment: FractionalOffset.bottomCenter,
            child: MaterialButton(
              onPressed: () => {},
              child: Text(_register ? 'REGISTER' : 'LOGIN'),
            ),
          ),
        ),
return Scaffold(     
  bottomNavigationBar: BottomAppBar(
    color: Colors.transparent,
    child: Text('bottom screen widget'),
    elevation: 0,
  ),
  body: Text('body')
  );
children : [
           ///1
           Button(),

           Expanded(child:Container()),

           ///2
           Button(),
           ]
      drawer: Drawer(
        child: Center(
          child: Align(
            alignment: Alignment.bottomCenter,
            child: RaisedButton(
              child: const Text('Logout', style: TextStyle(fontSize: 20)),
              onPressed: () async {
                await _auth.signOutUser();
                Navigator.of(context).pushReplacement(
                    MaterialPageRoute(builder: (context) => LoginScreen()));
              },
            ),
          ),
        ),
      ),