gpt4 book ai didi

flutter - paint()方法中的Size属性不同于CustomPainter中指定的大小

转载 作者:行者123 更新时间:2023-12-03 04:58:57 27 4
gpt4 key购买 nike

首先是code:

import 'package:flutter/cupertino.dart';

class Test extends StatelessWidget {
@override
Widget build(BuildContext context) {
final width1 = MediaQuery.of(context).size.width;
print(width1);
return GestureDetector(
child: Container(
height: width1,
width: width1,
child: Stack(
alignment: AlignmentDirectional.center,
children: <Widget>[
Child1(),
Child2(),
Child3(),
//...
],
),
));
}
}

class Child1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
final width2 = MediaQuery.of(context).size.width;
print(width2);
return CustomPaint(
painter: Painter1(),
size: MediaQuery.of(context).size,
//even trying to impose a child's width didn't work
// child:Container(
// width: width2,
// height: width2,
// )
);
}
}

class Painter1 extends CustomPainter {
@override
void paint(Canvas canvas, Size size) {
final width3 = size.width;
print(width3);//different than width1 and width2 !!
}
//...
}

我将小部件 Test()放置在占据整个屏幕的Column小部件中,而我期望的是 width1=width2=width3(即我期望 paint()方法接收的大小与为相应 CustomPaint类指定的大小相同)。

当我将此 Test()小部件直接放置在 Column中时,可以实现预期的行为。

但是,当我用 Test()包装 Padding()时,然后 paint()方法接收到小于 width1的大小(并且 width1保持等于 width2)

如何使 paint()接收想要的大小?

最佳答案

当用Padding()包装Test()时,Canvas会变小,因为Padding会占用剩余的空间。

width1 and width2 stays the same because its the size from MediaQuery, which is your screen size.



我认为您在paint()中获得的尺寸是您的width1-填充,如果没有错的话。

尝试对齐容器的子级,而不添加填充。

关于flutter - paint()方法中的Size属性不同于CustomPainter中指定的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59999140/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com