Flutter:使用ScrollController绑定CustomPainter

问题描述

我有一个像下面的CustomPainter,我希望它与包含ListView.builder的父窗口小部件绑定吗?
预期的行为:当我向上或向下滚动时,画家应该绘画。

import 'dart:math';
import 'package:Flutter/material.dart';

class PlayerPainter extends CustomPainter {
  final Animation<double> animation;
  final Paint backgroundPaint;
  final Color bgColor;
  final Color thumbColor;
  final Paint sliderPaint;
  final Paint thumbPaint;

  PlayerPainter({this.animation,this.bgColor,this.thumbColor})
      : backgroundPaint = Paint()..color = bgColor,sliderPaint = Paint()
          ..style = PaintingStyle.stroke
          ..strokeWidth = 3.0,thumbPaint = Paint()..color = thumbColor,super(repaint: animation);

  @override
  void paint(Canvas canvas,Size size) {
    final value = animation.value;
    final radius = size.width * 0.5;
    final thumbRadius = 4.0;
    final rect = Rect.fromCircle(center: Offset(radius,size.height),radius: radius);
    final thumbPosX = radius + (radius * -cos(value * pi));
    final thumbPosY = (size.height - thumbRadius) + ((size.height - thumbRadius) * -sin(value * pi));
    sliderPaint.shader = LinearGradient(colors: [
      const Color(0xFFCC2B5E),const Color(0xFF753A88),const Color(0xFFCC2B5E),]).createShader(rect);

    canvas.drawArc(rect,pi,false,backgroundPaint);
    canvas.drawArc(rect,value * pi,sliderPaint);
    canvas.drawCircle(Offset(thumbPosX,thumbPosY),thumbRadius,thumbPaint);
  }

  @override
  bool shouldRepaint(PlayerPainter oldDelegate) => true;
}

parent.dart

@override
  void initState() {
    _controller = AnimationController(vsync: this);
    _scrollController.addListener(() {
      setState(() {
        _controller = AnimationController(
          value: _scrollController.offset,duration: Duration(seconds: 0),vsync: this,);
      });
    });
}
PlayerView(
...
  controller: _controller,),

════════基础库捕获到异常Exception ══════════════════ _MusicScreenState是SingleTickerProviderStateMixin,但是创建了多个代码

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...