这里是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()
收到想要的尺寸?
这里是代码优先:import'package:package:flutter / cupertino.dart';类测试扩展StatelessWidget {@override Widget build(BuildContext context){final width1 = MediaQuery.of(context)....
[当用Padding()包装Test()时,Canvas会变小,因为Padding会占用剩余的空间。