37 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Dart
		
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Dart
		
	
	
	
| import 'package:flutter/material.dart';
 | |
| 
 | |
| import 'package:flutter_gen/gen_l10n/l10n.dart';
 | |
| import 'package:shared_preferences/shared_preferences.dart';
 | |
| import 'package:url_launcher/url_launcher_string.dart';
 | |
| 
 | |
| import 'package:fluffychat/config/app_config.dart';
 | |
| import 'package:fluffychat/utils/platform_infos.dart';
 | |
| 
 | |
| abstract class UpdateNotifier {
 | |
|   static const String versionStoreKey = 'last_known_version';
 | |
| 
 | |
|   static void showUpdateSnackBar(BuildContext context) async {
 | |
|     final scaffoldMessenger = ScaffoldMessenger.of(context);
 | |
|     final currentVersion = await PlatformInfos.getVersion();
 | |
|     final store = await SharedPreferences.getInstance();
 | |
|     final storedVersion = store.getString(versionStoreKey);
 | |
| 
 | |
|     if (currentVersion != storedVersion) {
 | |
|       if (storedVersion != null) {
 | |
|         scaffoldMessenger.showSnackBar(
 | |
|           SnackBar(
 | |
|             duration: const Duration(seconds: 30),
 | |
|             showCloseIcon: true,
 | |
|             content: Text(L10n.of(context).updateInstalled(currentVersion)),
 | |
|             action: SnackBarAction(
 | |
|               label: L10n.of(context).changelog,
 | |
|               onPressed: () => launchUrlString(AppConfig.changelogUrl),
 | |
|             ),
 | |
|           ),
 | |
|         );
 | |
|       }
 | |
|       await store.setString(versionStoreKey, currentVersion);
 | |
|     }
 | |
|   }
 | |
| }
 |