Flutter: GIF Image Asset paintImage() для CustomPaint не анимируется

Я хочу добавить актив Animated GIF в виджет CustomPaint, GIF рисуется, но не анимируется.

Я загружаю анимированное изображение gif из ресурсов следующим образом:

      Future<void> loadAndAssignImageAssets() async {
    fireImage = await loadImageAssets('assets/images/icegif-1624.gif');
  }

  Future<ui.Image> loadImageAssets(String assetPath) async {
    final data = await rootBundle.load(assetPath);
    final list = Uint8List.view(data.buffer);
    final completer = Completer<ui.Image>();
    ui.decodeImageFromList(list, completer.complete);
    return completer.future;
  }

Я передаю GIF виджету CustomPaint следующим образом:

        @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: FutureBuilder(
          future: loadAndAssignImageAssets(),
          builder: (context, snapshot) {
            if (snapshot.connectionState == ConnectionState.waiting) {
              return Center(child: CircularProgressIndicator());
            }

            return CustomPaint(
              painter: BurnPainter(fireImage),
              child: Container(),
            );
          }),
    );
  }
}

Тогда это метод, в котором я рисую GIF внутри класса BurnPainter:

        void _drawFire(Size size, Canvas canvas, Rect rectangle) {
    var flameImageWidth = rectangle.width;
    var flameImageHeight = rectangle.height / 5;
    paintImage(
      canvas: canvas,
      rect: Rect.fromLTWH(
        (rectangle.left),
        (rectangle.top),
        flameImageWidth,
        flameImageHeight,
      ),
      image: fireImage,
      filterQuality: FilterQuality.low,
      fit: BoxFit.fill,
    );
  }

Изображение рисуется, но не анимируется. Итак, как сделать так, чтобы анимированный GIF-файл анимировался при рисовании в виджете CustomPaint?

      

0 ответов

Другие вопросы по тегам