Flutter: как использовать GIF в качестве заставки в приложении Flutter

Чтобы использовать GIF в качестве заставки в приложении Flutter, вы можете использовать несколько методов. Вот несколько примеров с фрагментами кода:

Метод 1: использование пакета flutter_svg

import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
class SplashScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: SvgPicture.asset(
          'assets/splash_screen.svg',  // Replace with your GIF image path
          width: 200,
          height: 200,
        ),
      ),
    );
  }
}

Метод 2: использование пакета flare_flutter

import 'package:flutter/material.dart';
import 'package:flare_flutter/flare_actor.dart';
class SplashScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: FlareActor(
          'assets/splash_screen.flr',  // Replace with your GIF image path
          animation: 'splash_animation',
          fit: BoxFit.contain,
        ),
      ),
    );
  }
}

Метод 3: использование пакета flutter_gifimage

import 'package:flutter/material.dart';
import 'package:flutter_gifimage/flutter_gifimage.dart';
class SplashScreen extends StatefulWidget {
  @override
  _SplashScreenState createState() => _SplashScreenState();
}
class _SplashScreenState extends State<SplashScreen>
    with SingleTickerProviderStateMixin {
  late GifController _controller;
  @override
  void initState() {
    super.initState();
    _controller = GifController(vsync: this);
    _controller.addStatusListener((status) {
      if (status == AnimationStatus.completed) {
        // Perform navigation or other actions after animation completion
      }
    });
    _controller.repeat(min: 0, max: 29, period: Duration(milliseconds: 5000));
  }
  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: GifImage(
          controller: _controller,
          image: AssetImage('assets/splash_screen.gif'),  // Replace with your GIF image path
        ),
      ),
    );
  }
}