不能中心柱的Widget

问题描述 投票:1回答:2

我是新来扑,我想中心柱组件,但是它不工作内的所有部件。我试着封装列成中心窗口小部件,但它仍然是相同的,并与屏幕的顶部对齐。下面是我的代码,请看看,让我知道我做错了。谢谢 :)

enter image description here

import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

class SignIn extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Material(
      child: Padding(
        padding: EdgeInsets.all(15.0),
        child: Column(
          children: <Widget>[
            Text(
              'SignIn Screen',
              style: TextStyle(fontSize: 26.0),
            ),
            Padding(
              padding: EdgeInsets.only(top: 30.0),
            ),
            TextField(
              maxLength: 25,
              decoration: InputDecoration(
                hintText: 'Enter username',
              ),
            ),
            TextField(
              maxLength: 25,
              decoration: InputDecoration(
                hintText: 'Enter password',
              ),
            ),
            Expanded(
              child: Column(
                crossAxisAlignment: CrossAxisAlignment.stretch,
                children: <Widget>[
                  RaisedButton(
                    child: Text('SignIn'),
                    onPressed: _signIn,
                  ),
                ],
              ),
            ),
          ],
        ),
      ),
    );
  }

  Future _signIn() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    await prefs.setBool('isLoggedIn', true);
  }
}
android flutter flutter-layout
2个回答
4
投票

添加MainAxisAlignment.center和删除Expanded

class SignIn extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Material(
      child: Padding(
        padding: EdgeInsets.all(15.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: <Widget>[
            Text(
              'SignIn Screen',
              style: TextStyle(fontSize: 26.0),
            ),
            Padding(
              padding: EdgeInsets.only(top: 30.0),
            ),
            TextField(
              maxLength: 25,
              decoration: InputDecoration(
                hintText: 'Enter username',
              ),
            ),
            TextField(
              maxLength: 25,
              decoration: InputDecoration(
                hintText: 'Enter password',
              ),
            ),
            RaisedButton(
                    child: Text('SignIn'),
                    onPressed: _signIn,
                  ),
          ],
        ),
      ),
    );
  }

1
投票

Center vertically

Column(
  mainAxisAlignment: MainAxisAlignment.center,
  children: <Widget>[ ... ],
)

Center horizontally

Column(
  crossAxisAlignment: CrossAxisAlignment.center,
  children: <Widget>[ ... ],
)

但是,如果列拥抱它的内容,那么只是把它包在一个中心窗口小部件

Center(
  child: Column(
    children: <Widget>[ ... ],
  ),
)
© www.soinside.com 2019 - 2024. All rights reserved.