我们尝试在flutter中构建自定义形状向量,可以在运行时更改 . 例如,我们需要披萨形状矢量小部件,我们可以根据变量值更改切片颜色 .我们尝试使用画布和颤振的画家,但他们也不支持SVG标签和SVG视图 .
您可以创建一个扩展CustomPainter的小部件
class Sky扩展CustomPainter {@overridevoid 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),);}
@overrideSemanticsBuilderCallback 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上的相同字段不同 .@overridebool shouldRepaint(Sky oldDelegate)=> false;@overridebool shouldRebuildSemantics(Sky oldDelegate)=> false;}
也可以看看
https://github.com/flutter/flutter/tree/master/dev/tools/vitool
https://github.com/simolus3/fluttie(不确定这是否已经有效)
1 回答
您可以创建一个扩展CustomPainter的小部件
@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;
}
也可以看看
https://github.com/flutter/flutter/tree/master/dev/tools/vitool
https://github.com/simolus3/fluttie(不确定这是否已经有效)