我需要绘制以上背景。我无法绘制黑色和蓝色背景。
class _BackGroundPainter extends CustomPainter{
@override
void paint(Canvas canvas, Size size) {
Path path = Path();
Paint paint = Paint();
path.moveTo(0, size.height*0.2);
path.quadraticBezierTo(size.width * 0.135, size.height * 0.178, size.width * 0.281, size.height*0.0889);
path.quadraticBezierTo(size.width * 0.4, size.height * 0.0113, size.width*0.8, 0);
path.lineTo(0, 0);
path.lineTo(0, size.width*0.8);
path.close();
paint.color = Colors.yellowAccent;
canvas.drawPath(path, paint);
path = Path();
path.moveTo(0, size.height * 0.4);
path.quadraticBezierTo(size.width*0.4, size.height * 0.5, size.width*0.6, size.height*0.25);
path.quadraticBezierTo(size.width*0.7, size.height*0.15, size.width, size.height*0.1);
path.lineTo(0, 0);
paint.color = Colors.black87;
canvas.drawPath(path, paint);
}
@override
bool shouldRepaint(CustomPainter oldDelegate) => false;
}
这是我的代码,我只能画黄线
答案 0 :(得分:1)
您可以将CustomPainter与Canvas类一起使用。 正如@Farhana所建议的,您可以使用图像,但是该方法存在一些缺点
内存昂贵
不可扩展
...
这是从官方文献中绘制天空背景的示例
function MyComponent(props) {
const [x, setX] = useState(false);
// On initial render
useEffect(() => {
props.jQueryButton.addEventListener('click', onXSave)
return ()=> props.jQueryButton.removeEventListener('click', onXSave)
}, [onXSave, props.jQueryButton])
useEffect(() => {
console.log("x changed " + x); // everytime onXChange is called, x
state is updated with the checked value, and this console.log shows
the correct state value
}, [x]);
onXChange = event => {
setX(event.target.checked); // checked is true in this context
};
onXSave = event => {
const obj = { x: x}; // x is false here, even though the state in this context shows it to be true.
};
}