#flutter #flutter-dependencies
#флаттер #flutter-зависимости
Вопрос:
Я использую flutter_local_notifications
зависимость в своем приложении для отправки локального уведомления после нажатия кнопки. В приложении при нажатии кнопки должно появиться локальное уведомление, и приложение должно перейти ко второму экрану. Однако выполняется только второе действие, и уведомления не отображаются. Я взял ссылки из этого руководства YouTube для создания локальных уведомлений в своем приложении.
notificationservice.dart
Файл моего приложения:
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:timezone/timezone.dart' as tz;
import 'package:timezone/data/latest.dart' as tz;
class NotificationService {
static final NotificationService _notificationService = NotificationService._internal();
factory NotificationService() {
return _notificationService;
}
final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
NotificationService._internal();
Future<void> initNotification() async {
final AndroidInitializationSettings initializationSettingsAndroid =
AndroidInitializationSettings('@drawable/ic_launcher');
final IOSInitializationSettings initializationSettingsIOS =
IOSInitializationSettings(
requestAlertPermission: false,
requestBadgePermission: false,
requestSoundPermission: false,
);
final InitializationSettings initializationSettings =
InitializationSettings(
android: initializationSettingsAndroid,
iOS: initializationSettingsIOS
);
await flutterLocalNotificationsPlugin.initialize(initializationSettings);
}
Future<void> showNotification(int id, String title, String body, int seconds) async {
await flutterLocalNotificationsPlugin.zonedSchedule(
id,
title,
body,
tz.TZDateTime.now(tz.local).add(Duration(seconds: seconds)),
const NotificationDetails(
android: AndroidNotificationDetails(
'main_channel',
'Main Channel',
channelDescription: 'Main channel notifications',
importance: Importance.max,
priority: Priority.max,
icon: '@drawable/ic_launcher'
),
iOS: IOSNotificationDetails(
sound: 'default.wav',
presentAlert: true,
presentBadge: true,
presentSound: true,
),
),
uiLocalNotificationDateInterpretation: UILocalNotificationDateInterpretation.absoluteTime,
androidAllowWhileIdle: true,
);
}
}
Реализация функции локального уведомления в TextButton
виджете выглядит следующим образом:
TextButton(
onPressed: () {
//lines of codes
NotificationService().showNotification(1, "title", "body", 5);
Navigator.of(context).pushNamed(CaseConfirmationScreen.routeName);
},
child: Text(
"File Case",
style: GoogleFonts.poppins(
color: Colors.white,
fontSize: 26.0,
fontWeight: FontWeight.w500,
letterSpacing: 2.0,
),
),
style: TextButton.styleFrom(
backgroundColor: Colors.red,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(6.0),
),
padding: const EdgeInsets.symmetric(
horizontal: 22.0,
vertical: 15.0,
),
),
),
Ошибка, отображаемая в консоли отладки, заключается в следующем.
Исходный код приложения в руководстве Youtube
Что я должен сделать, чтобы устранить эту ошибку?
Комментарии:
1. доступен ли ‘@drawable / ic_launcher’ в этом расположении?
Ответ №1:
Добавьте свой значок в [projectFolder]/android/ app/src/main/ res/ drawable (например, app_icon.png) и используйте это имя здесь:
var initializationSettingsAndroid =
new AndroidInitializationSettings('@mipmap/ic_launcher');