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会好得多