You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mohemm-flutter-app/lib/ui/dialogs/success_dialog.dart

73 lines
1.9 KiB
Dart

import 'dart:io';
import 'package:flutter/material.dart';
import 'package:just_audio/just_audio.dart';
import 'package:lottie/lottie.dart';
class SuccessDialog extends StatefulWidget {
bool isFromDashboard;
SuccessDialog(this.isFromDashboard);
@override
State<SuccessDialog> createState() => _SuccessDialogState();
}
class _SuccessDialogState extends State<SuccessDialog> with TickerProviderStateMixin {
late AnimationController _controller;
@override
void initState() {
_controller = AnimationController(vsync: this);
super.initState();
}
Future<void> playSuccessSound() async {
AudioPlayer player = AudioPlayer();
String audioAsset = "";
if (Platform.isAndroid) {
audioAsset = "assets/audio/success_tone_android.mp3";
} else {
audioAsset = "assets/audio/success_tone_ios.caf";
}
await player.setAsset(audioAsset);
await player.load();
player.play();
}
@override
Widget build(BuildContext context) {
double size = MediaQuery.of(context).size.width / 1.8;
return Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: [
Container(
width: size,
height: size,
child: Card(
child: Lottie.asset(
'assets/lottie/lt_success.json',
repeat: false,
reverse: false,
controller: _controller,
onLoaded: (LottieComposition v) async {
print("calling_lottie " + v.seconds.toString());
await playSuccessSound();
_controller
..duration = v.duration
..forward().whenComplete(() async {
Navigator.pop(context);
if (widget.isFromDashboard) Navigator.pop(context);
});
},
),
),
),
],
);
}
}