我正试着用Ffltter为我的网站创建一个主页, 我已经将内部具有灵活小部件的列放入了堆栈小部件. 在全屏模式下,它看起来很好,位置正确,但当我改变屏幕大小时,列不会粘在顶部,而是在中间显示一个小边距.
以下是代码
<sub>
class MainPage extends StatefulWidget {
const MainPage({Key? key}) : super(key: key);
@override
State<MainPage> createState() => _MainPageState();
}
class _MainPageState extends State<MainPage> {
bool _isLogin = false;
@override
Widget build(BuildContext context) {
// check login
Future.delayed(Duration.zero, () {
if (isLogin()) {
setState(() {
_isLogin = true;
});
} else {
MovePage(
context: context,
routeName: Routes.loginPage,
generation: Generation());
}
});
if (_isLogin) {
return Scaffold(
body: Stack(children: [
const _OrangeVertical(),
const _GreenVertical(),
const _PurpleVertical(),
const _LogoVertical(),
]),
);
} else {
return const Scaffold(
body: Center(
child: CircularProgressIndicator(),
),
);
}
}
}
class _Logo1920 extends StatelessWidget {
const _Logo1920();
@override
Widget build(BuildContext context) {
return const FlexibleImage(
imgPath: 'assets/images/1920_logo.png',
xFlexesOne: 3,
xFlexesTwo: 4,
xFlexesThree: 3,
yFlexesOne: 325,
yFlexesTwo: 625,
yFlexesThree: 735,
);
}
}
class _Orange1920 extends StatelessWidget {
const _Orange1920();
@override
Widget build(BuildContext context) {
return const FlexibleImage(
imgPath: 'assets/images/1920_orange.png',
xFlexesOne: 0,
xFlexesTwo: 1,
xFlexesThree: 2,
yFlexesOne: 0,
yFlexesTwo: 7,
yFlexesThree: 10,
);
}
}
class _Green1920 extends StatelessWidget {
const _Green1920();
@override
Widget build(BuildContext context) {
return const FlexibleImage(
imgPath: 'assets/images/1920_green_new.png',
xFlexesOne: 0,
xFlexesTwo: 11,
xFlexesThree: 20,
yFlexesOne: 11,
yFlexesTwo: 6,
yFlexesThree: 0,
);
}
}
class _Purple1920 extends StatelessWidget {
const _Purple1920();
@override
Widget build(BuildContext context) {
return const FlexibleImage(
imgPath: 'assets/images/1920_purple.png',
xFlexesOne: 20,
xFlexesTwo: 11,
xFlexesThree: 0,
yFlexesOne: 0,
yFlexesTwo: 0,
yFlexesThree: 0);
}
}
class FlexibleImage extends StatelessWidget {
final String imgPath;
final int xFlexesOne;
final int xFlexesTwo;
final int xFlexesThree;
final int yFlexesOne;
final int yFlexesTwo;
final int yFlexesThree;
const FlexibleImage({
super.key,
required this.imgPath,
required this.xFlexesOne,
required this.xFlexesTwo,
required this.xFlexesThree,
required this.yFlexesOne,
required this.yFlexesTwo,
required this.yFlexesThree,
});
@override
Widget build(BuildContext context) {
return Column(
children: [
if (yFlexesOne > 0)
Flexible(
flex: yFlexesOne,
fit: FlexFit.tight,
child: const SizedBox(),
),
Flexible(
flex: yFlexesTwo,
fit: FlexFit.tight,
child: Row(
children: [
if (xFlexesOne > 0)
Flexible(
flex: xFlexesOne,
fit: FlexFit.tight,
child: const SizedBox(),
),
Flexible(
flex: xFlexesTwo,
fit: FlexFit.tight,
child: Image.asset(
imgPath,
fit: BoxFit.fill,
),
),
if (xFlexesThree > 0)
Flexible(
flex: xFlexesThree,
fit: FlexFit.tight,
child: const SizedBox(),
),
],
),
),
if (yFlexesThree > 0)
Flexible(
flex: yFlexesThree,
fit: FlexFit.tight,
child: const SizedBox(),
),
],
);
}
}
</sub>
以下是屏幕截图
normally it should look like this. but this happens when I change the size of the screen.
最初,这种情况发生在行小部件上,所以我try 将行中的列更改为列中的行,但现在发生了这种情况