Я использую gif_view для управления gif во флаттере, и когда он заканчивает воспроизведение, он возвращается в исходную позицию, но я хочу, чтобы он сам находился в последней позиции.
import 'package:gif_view/gif_view.dart';
final controller = GifController(loop: false);
GifView.asset(
"assets/1.gif",
controller: controller,
progress: const CircularProgressIndicator(),
),
даже загрузка занимает много времени, поэтому я тоже хочу это исправить
Я ожидаю исправления как для быстрой загрузки gif, так и для того, чтобы gif не сбрасывался после полного воспроизведения.
Я добился того же самого, используя пакет Lottie.
Вы можете сделать что-то вроде:
import 'package:lottie/lottie.dart';
и
LottieBuilder.asset(
"assets/1.json",
fit: BoxFit.contain,
repeat: false,
),
Отказ от ответственности Lottie работает только с файлами .json
и .lottie
.
Для файлов .gif
, использующих gif_view
, выполните:
final controller = GifController(loop: false);
controller.addListener(() {
if (controller.status == GifStatus.stoped) {
controller.pause();
}
});
и
GifView.asset(
"assets/1.gif",
controller: controller,
progress: const CircularProgressIndicator(),
),
Привет, @HiteshBharadwaj, к сожалению, пакет не работает с файлами .gif. Я обновил ответ
Я какое-то время следовал этому методу и помогал мне избежать перезагрузки.
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,
),
// }),
);
}
}
будет ли Лотти напрямую читать файлы .gif? Я получаю сообщение об ошибке: неверный формат JSON по пути $.