![](/img/trans.png)
[英]How to convert Linear Gradient from Figma to Flutter/Dart code
[英]dart/flutter: Syntax error when using ui.Gradient.linear
我坚持用我扑的项目,在那里我可以不实例化一个Android Studio中有语法错误ui.Gradient
使用其ui.Gradient.linear
构造。
这是在 CustomPainter 子类中。 我已将编译器错误发布为下面的评论。
import 'dart:ui';
...
@override
void paint(Canvas canvas, Size size) {
final tracePaint = Paint()
..strokeJoin = StrokeJoin.round
..strokeWidth = 2.0
..color = traceColor
..style = PaintingStyle.stroke;
...
// HERE: I've tried several ways as below and I simply cannot use this constructor.
tracePaint.shader = Gradient.linear(
from: Offset(size.width-currentX.toDouble(), size.height),
to: Offset(size.width-currentX.toDouble(), 0),
colors: colors,
colorStops: colorStops,).createShader(...); // The method 'linear' isn't defined for the class Gradient.
tracePaint.shader = ui.Gradient.linear(...).createShader(...); // Undefined name 'ui'.
tracePaint.shader = dart.ui.Gradient.linear(...).createShader(...); // Undefined name 'dart'.
我检查了文档:
,但没找到我错的地方。
提示将不胜感激。
您可以在下面复制粘贴运行完整代码
第一步: import 'dart:ui' as ui;
第 2 步:请删除from: to: colors: colorStops:
工作演示
完整代码
import 'dart:math';
import 'dart:ui' as ui;
import 'package:flutter/material.dart';
class X1Painter extends CustomPainter {
@override
void paint(Canvas canvas, Size size) {
final tracePaint = Paint()
..strokeJoin = StrokeJoin.round
..strokeWidth = 2.0
..color = Colors.blue
..style = PaintingStyle.stroke;
// create a bounding square, based on the centre and radius of the arc
Rect rect = new Rect.fromCircle(
center: new Offset(165.0, 55.0),
radius: 180.0,
);
tracePaint.shader = ui.Gradient.linear(
Offset(0, 0),
Offset(200, 200),
<Color>[
Colors.green.withOpacity(1.0),
Colors.green.withOpacity(0.3),
Colors.yellow.withOpacity(0.2),
Colors.red.withOpacity(0.1),
Colors.red.withOpacity(0.0),
],
[
0.0,
0.5,
0.7,
0.9,
1.0,
],
);
// and draw an arc
canvas.drawArc(rect, pi / 4, pi * 3 / 4, true, tracePaint);
}
@override
bool shouldRepaint(X1Painter oldDelegate) {
return true;
}
}
class X1Demo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(title: const Text('Arcs etc')),
body: new CustomPaint(
painter: new X1Painter(),
),
);
}
}
void main() {
runApp(
new MaterialApp(
theme: new ThemeData.dark(),
home: new X1Demo(),
),
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.