Flutter Can';t在容器中使柱子居中
我试着这么做已经有一段时间了,但我就是做不到。我尝试过使用Flutter Can';t在容器中使柱子居中,flutter,flutter-layout,flutter-container,Flutter,Flutter Layout,Flutter Container,我试着这么做已经有一段时间了,但我就是做不到。我尝试过使用Center(),但即使没有错误,它也无法正常工作。我也试过使用 mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, 对于专栏来说也是如此,但它仍然不起作用。我以前做过类似的事情,但现在我不确定它是不是因为它在分馏物理dbox()中,我确实需要它在那里。 以下是完整的代码: import 'package:
Center()
,但即使没有错误,它也无法正常工作。我也试过使用
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
对于专栏来说也是如此,但它仍然不起作用。我以前做过类似的事情,但现在我不确定它是不是因为它在分馏物理dbox()
中,我确实需要它在那里。
以下是完整的代码:
import 'package:flutter/material.dart';
void main() => runApp(MaterialApp(
home: Home(),
));
class Home extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
'Demo Login',
style: TextStyle(
color: Colors.black54,
),
),
centerTitle: true,
backgroundColor: Colors.blueGrey,
),
body: Align(
child: LayoutBuilder(
builder: (BuildContext context, BoxConstraints contraints) {
return AspectRatio(
aspectRatio: 1,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
new FractionallySizedBox(
widthFactor: 0.7,
child: new Stack(
children: [
ClipRRect(
borderRadius: BorderRadius.circular(20),
child: Container(
decoration: BoxDecoration(
border: Border.all(
color: Colors.black87,
width: 2,
)),
child: Image.asset(
'Assets/6.jpg',
color: Color.fromRGBO(255, 255, 255, 0.5),
colorBlendMode: BlendMode.modulate,
),
),
),
FractionallySizedBox(
widthFactor: 0.85,
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
SizedBox(
height: 50,
),
TextField(
autofocus: false,
textAlign: TextAlign.center,
keyboardType: TextInputType.text,
decoration: InputDecoration(
prefixIcon: Icon(Icons.face),
fillColor: Colors.black87,
filled: true,
hintText: "Enter Your Username",
hintStyle: TextStyle(
color: Colors.grey,
fontSize: 15,
),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(5),
),
labelText: "Username",
labelStyle: TextStyle(
color: Colors.grey,
fontSize: 15,
)),
),
SizedBox(
height: 12,
),
TextField(
keyboardType: TextInputType.visiblePassword,
autocorrect: false,
obscureText: true,
textAlign: TextAlign.center,
decoration: InputDecoration(
prefixIcon: Icon(Icons.security),
fillColor: Colors.black87,
filled: true,
hintText: "Enter Your Password",
hintStyle: TextStyle(
color: Colors.grey,
fontSize: 15,
),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(5),
),
labelText: "Password",
labelStyle: TextStyle(
color: Colors.grey,
fontSize: 15,
)),
),
SizedBox(
height: 20,
),
FlatButton(
onPressed: () {},
color: Colors.blueGrey,
height: 40,
minWidth: 150,
child: Text("Login"),
),
],
),
),
),
],
),
),
],
),
);
},
),
),
backgroundColor: Colors.grey[800],
);
}
}
以及在Linux设备上构建的输出:
非常感谢 在您的代码中删除
宽度因子:0.85
,然后它将居中对齐。我已经清理了一点您的代码,并在Android桌面上试用过,效果良好
import 'package:flutter/material.dart';
void main() => runApp(MaterialApp(
home: Home(),
));
class Home extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
'Demo Login',
style: TextStyle(
color: Colors.black54,
),
),
centerTitle: true,
backgroundColor: Colors.blueGrey,
),
body: Center(
child: Stack(
children: [
Center(
child: FractionallySizedBox(
widthFactor: 0.7,
child: ClipRRect(
borderRadius: BorderRadius.circular(20),
child: Container(
decoration: BoxDecoration(
border: Border.all(
color: Colors.black87,
width: 2,
)),
child: Image.asset(
'Assets/6.jpg',
color: Color.fromRGBO(255, 255, 255, 0.5),
colorBlendMode: BlendMode.modulate,
),
),
),
),
),
Center(
child: FractionallySizedBox(
widthFactor: 0.6,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
SizedBox(
height: 50,
),
TextField(
autofocus: false,
textAlign: TextAlign.center,
keyboardType: TextInputType.text,
decoration: InputDecoration(
prefixIcon: Icon(Icons.face),
fillColor: Colors.black87,
filled: true,
hintText: "Enter Your Username",
hintStyle: TextStyle(
color: Colors.grey,
fontSize: 15,
),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(5),
),
labelText: "Username",
labelStyle: TextStyle(
color: Colors.grey,
fontSize: 15,
)),
),
SizedBox(
height: 12,
),
TextField(
keyboardType: TextInputType.visiblePassword,
autocorrect: false,
obscureText: true,
textAlign: TextAlign.center,
decoration: InputDecoration(
prefixIcon: Icon(Icons.security),
fillColor: Colors.black87,
filled: true,
hintText: "Enter Your Password",
hintStyle: TextStyle(
color: Colors.grey,
fontSize: 15,
),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(5),
),
labelText: "Password",
labelStyle: TextStyle(
color: Colors.grey,
fontSize: 15,
)),
),
SizedBox(
height: 20,
),
FlatButton(
onPressed: () {},
color: Colors.blueGrey,
height: 40,
minWidth: 150,
child: Text("Login"),
),
],
),
),
),
],
),
),
backgroundColor: Colors.grey[800],
);
}
}
那仍然不起作用。甚至在此之前,按钮水平对齐,但文本字段没有对齐,因此我也认为文本字段有问题,但没有垂直对齐。我也需要那个代码。删除该代码只会使文本字段的宽度等于父窗口小部件的宽度,因此它看起来是对齐的,但不是我想要的结果