@@ -29,10 +29,12 @@ import 'package:dipantau_desktop_client/feature/presentation/widget/widget_error
2929import 'package:dipantau_desktop_client/injection_container.dart' ;
3030import 'package:easy_localization/easy_localization.dart' ;
3131import 'package:flutter/material.dart' ;
32+ import 'package:flutter/services.dart' ;
3233import 'package:flutter_bloc/flutter_bloc.dart' ;
3334import 'package:flutter_local_notifications/flutter_local_notifications.dart' ;
3435import 'package:font_awesome_flutter/font_awesome_flutter.dart' ;
3536import 'package:go_router/go_router.dart' ;
37+ import 'package:path_provider/path_provider.dart' ;
3638import 'package:tray_manager/tray_manager.dart' ;
3739import 'package:window_manager/window_manager.dart' ;
3840
@@ -99,6 +101,7 @@ class _HomePageState extends State<HomePage> with TrayListener, WindowListener {
99101 setupWindow ();
100102 setupTray ();
101103 doStartActivityListener ();
104+ checkAssetAudio ();
102105 notificationHelper.requestPermissionNotification ();
103106 WidgetsBinding .instance.addPostFrameCallback ((_) async {
104107 try {
@@ -1059,4 +1062,22 @@ class _HomePageState extends State<HomePage> with TrayListener, WindowListener {
10591062 },
10601063 );
10611064 }
1065+
1066+ void checkAssetAudio () async {
1067+ // Copy file audio dari aset ke /Library/Sounds [macOS]
1068+ final bytes = await rootBundle.load ('assets/audio/hasta_la_vista.aiff' );
1069+ final libraryDirectory = await getLibraryDirectory ();
1070+ final directory = Directory ('${libraryDirectory .path }/sounds' );
1071+ final pathDirectory = directory.path;
1072+ final buffer = bytes.buffer;
1073+ final fileAudioReminderNotTrack = File ('$pathDirectory /hasta_la_vista.aiff' );
1074+ if (! fileAudioReminderNotTrack.existsSync ()) {
1075+ fileAudioReminderNotTrack.writeAsBytes (
1076+ buffer.asUint8List (
1077+ bytes.offsetInBytes,
1078+ buffer.lengthInBytes,
1079+ ),
1080+ );
1081+ }
1082+ }
10621083}
0 commit comments