Improve notification icon initialization and fallback

This commit is contained in:
nahnah
2026-01-22 00:55:55 +00:00
parent 293c53ff34
commit a1ebd7bb3a
3 changed files with 34 additions and 12 deletions
+1 -1
View File
@@ -4,7 +4,7 @@ icons_launcher:
android:
enable: true
image_path: "assets/Florid.png"
notification_image: "assets/monochrome.png"
# notification_image: "assets/monochrome.png"
# adaptive_background_color: '#ffffff'
adaptive_background_image: "assets/Background.png"
adaptive_foreground_image: "assets/Foreground.png"
+7 -2
View File
@@ -7,8 +7,14 @@ import 'providers/download_provider.dart';
import 'providers/settings_provider.dart';
import 'screens/home_screen.dart';
import 'services/fdroid_api_service.dart';
import 'services/notification_service.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// Initialize notification service and request permission
await NotificationService().init();
void main() {
runApp(const FloridApp());
}
@@ -65,7 +71,6 @@ class FloridApp extends StatelessWidget {
],
child: Consumer<SettingsProvider>(
builder: (context, settings, _) {
return MaterialApp(
title: 'Florid - F-Droid Client',
debugShowCheckedModeBanner: false,
+26 -9
View File
@@ -1,4 +1,5 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/services.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
class NotificationService {
@@ -18,17 +19,33 @@ class NotificationService {
Future<void> init() async {
_flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
const AndroidInitializationSettings androidInitializationSettings =
AndroidInitializationSettings('ic_notification');
const InitializationSettings initializationSettings =
InitializationSettings(android: androidInitializationSettings);
await _flutterLocalNotificationsPlugin.initialize(
initializationSettings,
onDidReceiveNotificationResponse: _onNotificationTapped,
const InitializationSettings customIconSettings = InitializationSettings(
android: AndroidInitializationSettings('ic_notification'),
);
const InitializationSettings fallbackIconSettings = InitializationSettings(
android: AndroidInitializationSettings('@mipmap/ic_launcher'),
);
try {
await _flutterLocalNotificationsPlugin.initialize(
customIconSettings,
onDidReceiveNotificationResponse: _onNotificationTapped,
);
} on PlatformException catch (e) {
if (e.code == 'invalid_icon') {
debugPrint(
'Notification icon ic_notification missing, falling back to launcher icon: $e',
);
await _flutterLocalNotificationsPlugin.initialize(
fallbackIconSettings,
onDidReceiveNotificationResponse: _onNotificationTapped,
);
} else {
rethrow;
}
}
// Request notification permission on Android 13+
await requestPermission();