Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何在flatter中向该类添加参数?_Flutter_Dart - Fatal编程技术网

Flutter 如何在flatter中向该类添加参数?

Flutter 如何在flatter中向该类添加参数?,flutter,dart,Flutter,Dart,这是我要添加参数的类。例如,调用MyProgressLine()时,我希望传递一个整数并在Offset方法中使用它 class MyProgressLine extends CustomPainter { MyProgressLine(); @override void paint(Canvas canvas, Size size) { Paint paint = Paint() ..color = Colors.green ..strokeWidt

这是我要添加参数的类。例如,调用MyProgressLine()时,我希望传递一个整数并在Offset方法中使用它

class MyProgressLine extends CustomPainter {
  MyProgressLine();

  @override
  void paint(Canvas canvas, Size size) {
    Paint paint = Paint()
      ..color = Colors.green
      ..strokeWidth = 3.0
      ..style = PaintingStyle.stroke;

    double endPointsRadius = 5.0;

    // Draws starting point
    canvas.drawCircle(Offset.zero, endPointsRadius, paint);
    canvas.drawLine(
        Offset(endPointsRadius, 0.0), Offset(endPointsRadius + 25, 0.0), paint);

    // Draws current progress line
    paint.style = PaintingStyle.fill;
    canvas.drawCircle(Offset(endPointsRadius + 25, 0.0), 3.0, paint);

    // Draws endpoint
    paint.style = PaintingStyle.stroke;
    paint.color = Colors.grey.withOpacity(0.5);
    canvas.drawLine(Offset(endPointsRadius + 25, 0.0), Offset(100, 0.0), paint);
    canvas.drawCircle(
        Offset(100 + endPointsRadius, 0.0), endPointsRadius, paint);
  }

  @override
  bool shouldRepaint(CustomPainter oldDelegate) => false;
}

更改构造函数:

MyProgressLine({int offsetBy = 0});
然后在需要时使用
offsetBy

class MyProgressLine extends CustomPainter {
  final int myParam;
  MyProgressLine(this.myParam);

  @override
  void paint(Canvas canvas, Size size) {
      // ... 
      // Draws starting point
      canvas.drawCircle(Offset.zero, endPointsRadius, paint);
      canvas.drawLine(
          Offset(endPointsRadius, 0.0), Offset(endPointsRadius + 25 + myParam, 0.0), paint);

      // ...

    }

  @override
  bool shouldRepaint(CustomPainter oldDelegate) => false;
}
无论何时使用
MyProgressLine
,都可以这样称呼它:
MyProgressLine(x)其中x是所需的任意整数