列中的颤振多交叉轴对齐

时间:2019-09-14 15:09:40

标签: flutter dart flutter-layout

是否有一种方法可以使一列中的某些项目使用crossaxisalignment.start对齐,而另一些项目使用crossaxisalignment.center对齐?

                  Column(
                    mainAxisAlignment: MainAxisAlignment.end,
                    children: <Widget>[
                    // These text fields = crossaxisalignment.start
                      Text(
                        'Welcome',
                        textAlign: TextAlign.start,
                        style: TextStyle(
                          fontWeight: FontWeight.bold,
                          color: Colors.white,
                          fontSize: 36,
                        ),
                      ),

                      Text(
                        'To my test app',
                        textAlign: TextAlign.start,
                        style: TextStyle(
                          color: Colors.white,
                        ),
                      ),
                      SizedBox(height: 40.0),

                       // Everything else crossaxisalignment.center

                      TextFormField(
                        style: TextStyle(color: Colors.white),
                        textInputAction: TextInputAction.next,
                        focusNode: nodeOne,
                        onSaved: (value) => _email = value,
                        keyboardType: TextInputType.emailAddress,
                        decoration: InputDecoration(
                          prefixIcon:
                              Image.asset('assets/images/icons/Username.png'),
                          enabledBorder: UnderlineInputBorder(
                            borderSide: BorderSide(color: Colors.grey),
                          ),
                          focusedBorder: UnderlineInputBorder(
                            borderSide: BorderSide(color: Colors.white),
                          ),
                          labelText: "Email Address",
                          labelStyle: TextStyle(
                              color: nodeOne.hasFocus
                                  ? Colors.white
                                  : Colors.grey),
                        ),
                      ),
                      TextFormField(
                          style: TextStyle(color: Colors.white),
                          textInputAction: TextInputAction.go,
                          focusNode: nodeTwo,
                          onSaved: (value) => _password = value,
                          obscureText: true,
                          decoration: InputDecoration(
                              prefixIcon: Image.asset(
                                  'assets/images/icons/PasswordLock.png'),
                              enabledBorder: UnderlineInputBorder(
                                borderSide: BorderSide(color: Colors.grey),
                              ),
                              focusedBorder: UnderlineInputBorder(
                                borderSide: BorderSide(color: Colors.white),
                              ),
                              labelStyle: TextStyle(
                                  color: nodeTwo.hasFocus
                                      ? Colors.white
                                      : Colors.grey),
                              labelText: "Password")),
                      SizedBox(height: 20.0),

                      FlatButton(
                        onPressed: () {},
                        child: Text('Forgotten password?',
                            textAlign: TextAlign.center,
                            style: TextStyle(color: Colors.white)),
                      ),
                      ButtonTheme(
                        minWidth: MediaQuery.of(context).size.width,
                        height: 40,
                        child: RaisedButton(
                            textColor: prefix0.backgroundColor,
                            color: Colors.white,
                            child: Text("Login"),
                            onPressed: () {
                              _loginAction();
                            },
                            shape: new RoundedRectangleBorder(
                                borderRadius: new BorderRadius.circular(5.0))),
                      ),
                      FlatButton(
                        onPressed: () {},
                        child: Text('Not registered?',
                            textAlign: TextAlign.center,
                            style: TextStyle(color: Colors.white)),
                      ),
                      Divider(
                        indent: MediaQuery.of(context).size.width * 0.333333,
                        height: 5,
                        thickness: 3,
                        color: Colors.white,
                        endIndent: MediaQuery.of(context).size.width * 0.333333,
                      ),
                      SizedBox(height: 15),
                      ButtonTheme(
                        minWidth: MediaQuery.of(context).size.width,
                        height: 40,
                        child: RaisedButton(
                            textColor: prefix0.backgroundColor,
                            color: Colors.white,
                            child: Text("Register here"),
                            onPressed: () {
                              _loginAction();
                            },
                            shape: new RoundedRectangleBorder(
                                borderRadius: new BorderRadius.circular(5.0))),
                      ),
                      SizedBox(height: 20),

                    ],
                  ),

1 个答案:

答案 0 :(得分:2)

更好的方法是使用ListView并将其设置为children Align并设置alignment属性。

ListView(
  children: <Widget>[
    Align(
      alignment: Alignment.centerLeft,
      child: LeftWidget1(), // widget at left
    ),
    Align(
      alignment: Alignment.center,
      child: CenterWidget1(), // widget at center
    ),
    Align(
      alignment: Alignment.centerRight,
      child: RightWidget1(), // widget at right
    ),
  ],
)