flutter 如何让小部件快速抖动?

57hvy0tb  于 2022-11-25  发布在  Flutter
关注(0)|答案(2)|浏览(169)

我试着制作我自己的照片编解码器,我制作了一个512 * 512的图像,
我只是试图建立一个颜色和安排在一个容器中的列和行我的代码:

SizedBox(
          height: 512,
          width: 512,
          child: Column(
            children: List.generate(512, (index) {
              return Row(
                children: List.generate(512, (index) {
                  return Container(
                    height: 1,
                    width: 1,
                    color: Colors.blue,
                  );
                }),
              );
            }),
          ),
        ),

我试过这个代码,它很慢,
那么如何快速构建Flutter小部件呢?

b1zrtrql

b1zrtrql1#

您必须使用CustomPainter类来绘制您自己的自定义小部件

arknldoa

arknldoa2#

正如powerman23rus所说的,你应该使用CustomPainter,下面是一个基于你所提供的代码实现的例子:

class ImageWidget extends StatelessWidget {
  final Color color;
  final Size size;

  const ImageWidget({
    super.key,
    this.color = Colors.blue,
    this.size = const Size(512, 512),
  });

  @override
  Widget build(BuildContext context) {
    return CustomPaint(
      painter: ImagePainter(color: color),
      size: size,
    );
  }
}

class ImagePainter extends CustomPainter {
  final Color color;

  ImagePainter({required this.color});

  @override
  void paint(Canvas canvas, Size size) {
    final paint = Paint()..color = color;
    canvas.drawRect(Offset.zero & size, paint);
  }

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

您可以尝试使用full example on DartPad,自行检查性能。

相关问题