首页 文章

如何在颤动中绘制矢量形状

提问于
浏览
0

我们尝试在flutter中构建自定义形状向量,可以在运行时更改 . 例如,我们需要披萨形状矢量小部件,我们可以根据变量值更改切片颜色 .
我们尝试使用画布和颤振的画家,但他们也不支持SVG标签和SVG视图 .

1 回答

  • 2

    您可以创建一个扩展CustomPainter的小部件

    class Sky扩展CustomPainter {
    @override
    void paint(Canvas canvas,Size size){
    var rect = Offset.zero&size;
    var gradient = new RadialGradient(
    center:const Alignment(0.7,-0.6),
    半径:0.2,
    颜色:[const颜色(0xFFFFFF00),const颜色(0xFF0099FF)],
    停止:[0.4,1.0],
    );
    canvas.drawRect(
    RECT,
    new Paint().. shader = gradient.createShader(rect),
    );
    }

    @override
    SemanticsBuilderCallback get semanticsBuilder {
    return(大小){
    //注释包含太阳图片的矩形
    //标签为“Sun” . 当启用文本到语音功能时
    //设备,用户将能够在此图片上找到太阳
    //触摸
    var rect = Offset.zero&size;
    var width = size.shortestSide * 0.4;
    rect = const Alignment(0.8,-0.9).inscribe(new size(width,width),rect);
    返回[
    新的CustomPainterSemantics(
    rect:rect,
    properties:new SemanticsProperties(
    标签:'太阳',
    textDirection:TextDirection.ltr,


    ] .
    };
    }

    //由于这位天空画家没有田野,所以它总是画画
    //相同的东西和语义信息是一样的 .
    //因此我们在这里返回false . 如果我们有字段(设置
    //来自构造函数)然后我们将返回true,如果有的话
    //它们与oldDelegate上的相同字段不同 .
    @override
    bool shouldRepaint(Sky oldDelegate)=> false;
    @override
    bool shouldRebuildSemantics(Sky oldDelegate)=> false;
    }

    也可以看看

相关问题