From fae4afbc71e1d8c6837a0f83dfd3fdeaa8788db7 Mon Sep 17 00:00:00 2001 From: Konstantin Kollar Date: Sun, 18 Sep 2022 23:22:35 +0200 Subject: [PATCH] improve gif loading even further --- lib/screens/rain_radar.dart | 13 +++++++++++-- pubspec.lock | 7 +++++++ pubspec.yaml | 1 + 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/lib/screens/rain_radar.dart b/lib/screens/rain_radar.dart index 8f621e7..2a96632 100644 --- a/lib/screens/rain_radar.dart +++ b/lib/screens/rain_radar.dart @@ -2,6 +2,7 @@ import 'dart:typed_data'; import 'package:flutter/material.dart'; import 'package:flutter_gifimage/flutter_gifimage.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart'; +import 'package:visibility_detector/visibility_detector.dart'; class RainRadar extends StatefulWidget { const RainRadar({Key? key}) : super(key: key); @@ -45,7 +46,7 @@ class _RainRadarState extends State _gifBytes = gif.readAsBytesSync(); _gifLoaded = true; }); - controller.animateTo(24, duration: const Duration(seconds: 15)); + // controller.animateTo(24, duration: const Duration(seconds: 15)); }); } @@ -54,7 +55,15 @@ class _RainRadarState extends State Padding( padding: const EdgeInsets.all(10), child: _gifLoaded - ? GifImage(controller: controller, image: MemoryImage(_gifBytes)) + ? VisibilityDetector( + key: const Key('gif-key'), + onVisibilityChanged: (visibilityInfo) { + controller.animateTo(24, + duration: const Duration(seconds: 15)); + }, + child: GifImage( + controller: controller, image: MemoryImage(_gifBytes)), + ) : const CircularProgressIndicator()), Row(mainAxisAlignment: MainAxisAlignment.center, children: [ ElevatedButton( diff --git a/pubspec.lock b/pubspec.lock index 0a0ed03..22a8cf8 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -406,6 +406,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.2" + visibility_detector: + dependency: "direct main" + description: + name: visibility_detector + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.3" weather_icons: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 7733932..96747ce 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -40,6 +40,7 @@ dependencies: flutter_gifimage: path: ../flutter_gifimage-1.0.1 flutter_cache_manager: ^3.3.0 + visibility_detector: ^0.3.3 dev_dependencies: flutter_test: