美文网首页
Clip 组件

Clip 组件

作者: 乐狐 | 来源:发表于2022-07-08 09:53 被阅读0次
    Clip 组件.jpg
    剪裁组件 裁剪行为
    ClipOval 圆变矩或矩变圆
    ClipRRect 剪裁为圆角矩形
    ClipRect 剪裁掉溢出部分
    ClipPath 自定义路径剪裁
    import 'package:flutter/material.dart';
    
    void main() {
      runApp(const MaterialApp(
        debugShowCheckedModeBanner: false,
        home: LayoutWidget(),
      ));
    }
    
    class LayoutWidget extends StatefulWidget {
      const LayoutWidget({Key? key}) : super(key: key);
    
      @override
      State<StatefulWidget> createState() => _LayoutState();
    }
    
    class _LayoutState extends State<LayoutWidget> {
      @override
      Widget build(BuildContext context) {
        //头像
        Widget avatar = Image.asset("assets/images/fox.jpg", width: 60.0);
    
        return Scaffold(
          appBar: AppBar(title: const Text("Clip 组件")),
          body: Center(
            child: Column(
              children: [
                //原始
                avatar,
                //剪裁为圆形
                ClipOval(child: avatar),
                //剪裁为圆角矩形
                ClipRRect(
                  borderRadius: BorderRadius.circular(5.0),
                  child: avatar,
                ),
                Row(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    Align(
                      alignment: Alignment.topLeft,
                      //宽度缩放为原始宽度*0.5
                      widthFactor: 0.5,
                      child: avatar,
                    ),
                    const Text(
                      "Flutter",
                      style: TextStyle(color: Colors.red),
                    )
                  ],
                ),
                Row(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    //将溢出部分剪裁
                    ClipRect(
                      child: Align(
                        alignment: Alignment.topLeft,
                        //宽度缩放为原始宽度*0.5
                        widthFactor: 0.5,
                        child: avatar,
                      ),
                    ),
                    const Text("真好玩", style: TextStyle(color: Colors.blue))
                  ],
                ),
                Row(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: [
                    ClipRect(
                      clipper: CustomClipRect(12.0, 12.0, 12.0, 12.0),
                      child: Align(
                        alignment: Alignment.topLeft,
                        widthFactor: 0.5,
                        child: avatar,
                      ),
                    ),
                    const Text("真好玩", style: TextStyle(color: Colors.blue))
                  ],
                ),
              ],
            ),
          ),
        );
      }
    }
    
    //自定义裁剪
    class CustomClipRect extends CustomClipper<Rect> {
      final double left;
      final double top;
      final double width;
      final double height;
    
      //裁剪指定区域
      CustomClipRect(this.left, this.top, this.width, this.height);
    
      @override
      Rect getClip(Size size) => Rect.fromLTWH(left, top, width, height);
    
      @override
      bool shouldReclip(CustomClipper<Rect> oldClipper) => false;
    }
    

    相关文章

      网友评论

          本文标题:Clip 组件

          本文链接:https://www.haomeiwen.com/subject/ozfrbrtx.html