定位的小部件工作但对齐小部件在颤动的堆栈小部件中不起作用
positioned widget work but align widget don't work in stack widget in flutter
为什么当我尝试在堆栈中使用对齐时他的 child 不移动,
但是定位它的工作(我想使用它,因为我不能在所有移动维度上居中)
这是我的代码:
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: _launchURL,
child: Container(
child: Container(
child: Stack(children: <Widget>[
Column(
children: <Widget>[
Container(
decoration: new BoxDecoration(
border: Border.all(color: Colors.black12),
borderRadius: BorderRadius.all(Radius.circular(13)),
shape: BoxShape.rectangle,
color: Colors.white,
boxShadow: <BoxShadow>[
BoxShadow(
color: Colors.black26,
offset: Offset(3, 7),
blurRadius: 7.0,
),
],
),
height: 140,
width: MediaQuery.of(context).size.width * 0.42,
),
],
),
// this the code when I use the align widget
// Align(
// alignment: Alignment.bottomCenter,
Positioned(
top: MediaQuery.of(context).size.width * 0.42 / 7,
left: 40,
child: Container(
child: Column(
children: <Widget>[
Container(
decoration: new BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(16)),
shape: BoxShape.rectangle,
color: Colors.transparent,
boxShadow: <BoxShadow>[
BoxShadow(
color: Colors.grey,
offset: Offset(2, 5),
blurRadius: 5.0,
),
],
),
child: ClipRRect(
borderRadius: new BorderRadius.circular(16.0),
child: Image.asset(
"assets/RoundStyle/" + socialBadge + ".png",
height: 60,
width: 60,
),
),
),
SizedBox(
height: 20,
),
MyText3(
"@hisname",
color: Colors.grey,
)
],
),
),
),
]),
),
),
);
}
就是这样谢谢你:)
你不需要 Stack
或 Column
如果你想让你的小部件在 Container
内居中,只需将它添加为 child
.
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: _launchURL,
child: Container(
decoration: new BoxDecoration(
border: Border.all(color: Colors.black12),
borderRadius: BorderRadius.all(Radius.circular(13)),
shape: BoxShape.rectangle,
color: Colors.white,
boxShadow: <BoxShadow>[
BoxShadow(
color: Colors.black26,
offset: Offset(3, 7),
blurRadius: 7.0,
),
],
),
height: 140,
width: MediaQuery.of(context).size.width * 0.42,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
decoration: new BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(16)),
shape: BoxShape.rectangle,
color: Colors.transparent,
boxShadow: <BoxShadow>[
BoxShadow(
color: Colors.grey,
offset: Offset(2, 5),
blurRadius: 5.0,
),
],
),
child: ClipRRect(
borderRadius: new BorderRadius.circular(16.0),
child: Image.asset(
"assets/RoundStyle/" + socialBadge + ".png",
height: 60,
width: 60,
),
),
),
SizedBox(
height: 20,
),
MyText3(
"@BensebaBillal",
color: Colors.grey,
)
],
),
),
);
}
为什么当我尝试在堆栈中使用对齐时他的 child 不移动, 但是定位它的工作(我想使用它,因为我不能在所有移动维度上居中)
这是我的代码:
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: _launchURL,
child: Container(
child: Container(
child: Stack(children: <Widget>[
Column(
children: <Widget>[
Container(
decoration: new BoxDecoration(
border: Border.all(color: Colors.black12),
borderRadius: BorderRadius.all(Radius.circular(13)),
shape: BoxShape.rectangle,
color: Colors.white,
boxShadow: <BoxShadow>[
BoxShadow(
color: Colors.black26,
offset: Offset(3, 7),
blurRadius: 7.0,
),
],
),
height: 140,
width: MediaQuery.of(context).size.width * 0.42,
),
],
),
// this the code when I use the align widget
// Align(
// alignment: Alignment.bottomCenter,
Positioned(
top: MediaQuery.of(context).size.width * 0.42 / 7,
left: 40,
child: Container(
child: Column(
children: <Widget>[
Container(
decoration: new BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(16)),
shape: BoxShape.rectangle,
color: Colors.transparent,
boxShadow: <BoxShadow>[
BoxShadow(
color: Colors.grey,
offset: Offset(2, 5),
blurRadius: 5.0,
),
],
),
child: ClipRRect(
borderRadius: new BorderRadius.circular(16.0),
child: Image.asset(
"assets/RoundStyle/" + socialBadge + ".png",
height: 60,
width: 60,
),
),
),
SizedBox(
height: 20,
),
MyText3(
"@hisname",
color: Colors.grey,
)
],
),
),
),
]),
),
),
);
}
就是这样谢谢你:)
你不需要 Stack
或 Column
如果你想让你的小部件在 Container
内居中,只需将它添加为 child
.
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: _launchURL,
child: Container(
decoration: new BoxDecoration(
border: Border.all(color: Colors.black12),
borderRadius: BorderRadius.all(Radius.circular(13)),
shape: BoxShape.rectangle,
color: Colors.white,
boxShadow: <BoxShadow>[
BoxShadow(
color: Colors.black26,
offset: Offset(3, 7),
blurRadius: 7.0,
),
],
),
height: 140,
width: MediaQuery.of(context).size.width * 0.42,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
decoration: new BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(16)),
shape: BoxShape.rectangle,
color: Colors.transparent,
boxShadow: <BoxShadow>[
BoxShadow(
color: Colors.grey,
offset: Offset(2, 5),
blurRadius: 5.0,
),
],
),
child: ClipRRect(
borderRadius: new BorderRadius.circular(16.0),
child: Image.asset(
"assets/RoundStyle/" + socialBadge + ".png",
height: 60,
width: 60,
),
),
),
SizedBox(
height: 20,
),
MyText3(
"@BensebaBillal",
color: Colors.grey,
)
],
),
),
);
}