Android 卡入颤振后拆下额外零件
剪裁允许我只绘制我想要显示的部分。如何删除未绘制但仍占用空间的额外零件Android 卡入颤振后拆下额外零件,android,flutter,dart,flutter-layout,clip,Android,Flutter,Dart,Flutter Layout,Clip,剪裁允许我只绘制我想要显示的部分。如何删除未绘制但仍占用空间的额外零件 代码 import 'package:flutter/material.dart'; class ClipTut extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( body: Center( child: Row( childr
代码
import 'package:flutter/material.dart';
class ClipTut extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Row(
children: <Widget>[
ClipRect(
clipper: CustomRect(),
child: Container(
decoration: BoxDecoration(
border: Border.all(width: 4, color: Colors.black),
color: Colors.blue,
),
width: 200.0,
height: 200.0,
),
),
Container(
height: 200,
width: 100,
decoration: BoxDecoration(
border: Border.all(width: 4, color: Colors.black),
color: Colors.green,
),
)
],
),
),
);
}
}
class CustomRect extends CustomClipper<Rect> {
@override
Rect getClip(Size size) => Rect.fromLTRB(0, 0.0, size.width/2, size.height);
@override
bool shouldReclip(CustomRect oldClipper) => true;
}
导入“包装:颤振/材料.省道”;
类ClipTut扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:中(
孩子:排(
儿童:[
克里普雷克特(
clipper:CustomRect(),
子:容器(
装饰:盒子装饰(
边框:边框。全部(宽度:4,颜色:颜色。黑色),
颜色:颜色,蓝色,
),
宽度:200.0,
高度:200.0,
),
),
容器(
身高:200,
宽度:100,
装饰:盒子装饰(
边框:边框。全部(宽度:4,颜色:颜色。黑色),
颜色:颜色。绿色,
),
)
],
),
),
);
}
}
类CustomRect扩展了CustomClipper{
@凌驾
Rect-getClip(Size-Size)=>Rect.fromLTRB(0,0.0,Size.width/2,Size.height);
@凌驾
bool shouldReclip(CustomRect oldcipper)=>true;
}
我的解决方案
我最近遇到了一个类似的问题(我需要将图像切成两半),并在上找到了此示例代码(使用其他对齐点更改切片行为)-没有多余的空间:
ClipRect(
child: Align(
alignment: Alignment.topCenter,
heightFactor: 0.5,
child: Image.network(userAvatarUrl),
),
)
不确定你想要达到什么目标。如果没有右边框,您的左容器就不能很小吗?这是问题的一个示例,它是::我可以剪裁小部件的某些部分进行绘制,但是如何使未绘制部分的其余部分不占用空间。在本例中,如果我不剪裁蓝色容器,它将占用绿色容器旁边的整个空间。现在,蓝色容器被剪裁了,它显示了容器的某些部分,但占用了整个空间。我认为ClipRect只占用了您想要显示的空间,而不是将小部件剪裁到新的小部件,因此剪裁后的小部件仍然在那里,但只显示了您剪裁的部分。你想用它做什么?如果我能,我会帮你的。你可以使用
Stack
then(或Flow
widget),但老实说,如果你使用CustomPaint
widget,你的UI/UX会好得多