如何并排创建 3 个具有静态填充的响应式纵横比
How to create 3 responsive AspectRatios with static padding side by side
我想创建如下图所示的内容,我遇到的问题是我不知道我应该为父容器使用哪个宽高比以使其在宽度更改时完美响应。
我尝试了很多纵横比,比如 1200.0 / 451.0,但它会溢出(取决于 window 宽度,有时是 2px,有时是 3.7px)。
当我使用 1080.0 / 403.0 之类的东西时,它变得比全宽更小。
Widget buildWidget() {
return Container(
child: AspectRatio(
aspectRatio: 1200.0 / 451.0,
child: Row(
children: [
AspectRatio(
aspectRatio: 16.0 / 9.0,
child: Container(
decoration: BoxDecoration(
color: AppColors.black,
borderRadius:
BorderRadius.circular(context.cornerRadiusNormal),
),
),
),
SizedBox(width: context.basePadding),
Column(
children: [
Expanded(
child: AspectRatio(
aspectRatio: 16.0 / 9.0,
child: Container(
decoration: BoxDecoration(
color: AppColors.black,
borderRadius: BorderRadius.circular(
context.cornerRadiusNormal),
),
),
),
),
SizedBox(height: context.basePadding),
Expanded(
child: AspectRatio(
aspectRatio: 16.0 / 9.0,
child: Container(
decoration: BoxDecoration(
color: AppColors.black,
borderRadius: BorderRadius.circular(
context.cornerRadiusNormal),
),
),
),
),
],
),
],
),
),
);
});
}
多亏了 pskink,在将宽高比设置为 24 / 9 后它可以完美地工作,对于填充,我在下面的代码中这样做:
Widget buildWidget() {
return Container(
child: AspectRatio(
aspectRatio: 24 / 9,
child: Row(
children: [
AspectRatio(
aspectRatio: 16.0 / 9.0,
child: Padding(
padding: EdgeInsets.only(
left: context.basePadding / 2,
top: context.basePadding / 2,
right: context.basePadding,
bottom: context.basePadding / 2,
),
child: AspectRatio(
aspectRatio: 16.0 / 9.0,
child: Container(
decoration: BoxDecoration(
color: AppColors.black,
borderRadius:
BorderRadius.circular(context.cornerRadiusNormal),
),
),
),
),
),
Column(
children: [
Expanded(
child: AspectRatio(
aspectRatio: 16.0 / 9.0,
child: Padding(
padding: EdgeInsets.only(
left: context.basePadding,
top: context.basePadding / 2,
right: context.basePadding / 2,
bottom: context.basePadding / 2,
),
child: AspectRatio(
aspectRatio: 16.0 / 9.0,
child: Container(
decoration: BoxDecoration(
color: AppColors.black,
borderRadius:
BorderRadius.circular(context.cornerRadiusNormal),
),
),
),
),
),
),
Expanded(
child: AspectRatio(
aspectRatio: 16.0 / 9.0,
child: Padding(
padding: EdgeInsets.only(
left: context.basePadding,
top: context.basePadding / 2,
right: context.basePadding / 2,
bottom: context.basePadding / 2,
),
child: AspectRatio(
aspectRatio: 16.0 / 9.0,
child: Container(
decoration: BoxDecoration(
color: AppColors.black,
borderRadius:
BorderRadius.circular(context.cornerRadiusNormal),
),
),
),
),
),
),
],
),
],
),
),
);
}
我想创建如下图所示的内容,我遇到的问题是我不知道我应该为父容器使用哪个宽高比以使其在宽度更改时完美响应。 我尝试了很多纵横比,比如 1200.0 / 451.0,但它会溢出(取决于 window 宽度,有时是 2px,有时是 3.7px)。 当我使用 1080.0 / 403.0 之类的东西时,它变得比全宽更小。
Widget buildWidget() {
return Container(
child: AspectRatio(
aspectRatio: 1200.0 / 451.0,
child: Row(
children: [
AspectRatio(
aspectRatio: 16.0 / 9.0,
child: Container(
decoration: BoxDecoration(
color: AppColors.black,
borderRadius:
BorderRadius.circular(context.cornerRadiusNormal),
),
),
),
SizedBox(width: context.basePadding),
Column(
children: [
Expanded(
child: AspectRatio(
aspectRatio: 16.0 / 9.0,
child: Container(
decoration: BoxDecoration(
color: AppColors.black,
borderRadius: BorderRadius.circular(
context.cornerRadiusNormal),
),
),
),
),
SizedBox(height: context.basePadding),
Expanded(
child: AspectRatio(
aspectRatio: 16.0 / 9.0,
child: Container(
decoration: BoxDecoration(
color: AppColors.black,
borderRadius: BorderRadius.circular(
context.cornerRadiusNormal),
),
),
),
),
],
),
],
),
),
);
});
}
多亏了 pskink,在将宽高比设置为 24 / 9 后它可以完美地工作,对于填充,我在下面的代码中这样做:
Widget buildWidget() {
return Container(
child: AspectRatio(
aspectRatio: 24 / 9,
child: Row(
children: [
AspectRatio(
aspectRatio: 16.0 / 9.0,
child: Padding(
padding: EdgeInsets.only(
left: context.basePadding / 2,
top: context.basePadding / 2,
right: context.basePadding,
bottom: context.basePadding / 2,
),
child: AspectRatio(
aspectRatio: 16.0 / 9.0,
child: Container(
decoration: BoxDecoration(
color: AppColors.black,
borderRadius:
BorderRadius.circular(context.cornerRadiusNormal),
),
),
),
),
),
Column(
children: [
Expanded(
child: AspectRatio(
aspectRatio: 16.0 / 9.0,
child: Padding(
padding: EdgeInsets.only(
left: context.basePadding,
top: context.basePadding / 2,
right: context.basePadding / 2,
bottom: context.basePadding / 2,
),
child: AspectRatio(
aspectRatio: 16.0 / 9.0,
child: Container(
decoration: BoxDecoration(
color: AppColors.black,
borderRadius:
BorderRadius.circular(context.cornerRadiusNormal),
),
),
),
),
),
),
Expanded(
child: AspectRatio(
aspectRatio: 16.0 / 9.0,
child: Padding(
padding: EdgeInsets.only(
left: context.basePadding,
top: context.basePadding / 2,
right: context.basePadding / 2,
bottom: context.basePadding / 2,
),
child: AspectRatio(
aspectRatio: 16.0 / 9.0,
child: Container(
decoration: BoxDecoration(
color: AppColors.black,
borderRadius:
BorderRadius.circular(context.cornerRadiusNormal),
),
),
),
),
),
),
],
),
],
),
),
);
}