skip to Main Content

I’m using gif_view to control gif in flutter and when it finishes playing, it is coming to initial position, but I want it in last position itself.

import 'package:gif_view/gif_view.dart';
final controller = GifController(loop: false);
GifView.asset(
   "assets/1.gif",
   controller: controller,
   progress: const CircularProgressIndicator(),
),

even it is taking lot of time to load, so I want to fix this also

I’m expecting fix to both loading gif quickly and gif should not reset a after playing completely.

2

Answers


  1. Chosen as BEST ANSWER

    I followed this method for time being and worked for me to avoid reset.

    class _GifViewer extends State<GifViwer> {
      bool isPaused = false;
      late GifController controller;
    
      @override
      void initState() {
        controller = GifController(
            loop: false,
            onFrame: (value) {
              if (value == 100)   //<---------- last frame value - 1 
              {
                setState(() {
                  isPaused = true;
                });
              }
            });
    
        super.initState();
      }
    
      @override
      Widget build(BuildContext context) {
        if (isPaused) {
          controller.pause();
        }
        return Scaffold(
          body: GifView.asset(
            path,
            controller: controller,
          ),
          // }),
        );
      }
    }
    

  2. I achieved the same thing using Lottie package.

    You can do something like:

    import 'package:lottie/lottie.dart';
    

    and

    LottieBuilder.asset(
        "assets/1.gif",
        fit: BoxFit.contain,
        repeat: false,   
    ),
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search