initQR method
Implementation
initQR(Function getter) async {
pressed = true;
notifyListeners();
final prefs = await SharedPreferences.getInstance();
final existingQRCode = prefs.getString('qr_code');
final existingTimeToDeadline = prefs.getInt('time_to_deadline');
final bool isExpired = existingTimeToDeadline == null
? true
: (DateTime.now().millisecondsSinceEpoch > existingTimeToDeadline);
if (existingQRCode == null || isExpired) {
getter(url: "/user/generatelink").then((value) {
if (value != null) {
qrCode = value;
timeToDeadline = (DateTime.now()
.add(const Duration(minutes: 30))
.millisecondsSinceEpoch);
prefs.setString('qr_code', value);
prefs.setInt('time_to_deadline', timeToDeadline!);
qrLoaded = true;
pressed = false;
notifyListeners();
} else {
qrLoaded = false;
pressed = false;
notifyListeners();
}
});
} else {
qrCode = existingQRCode;
timeToDeadline = existingTimeToDeadline;
qrLoaded = true;
pressed = false;
notifyListeners();
}
}