无法从我的 flutter 应用程序发送本地通知
Unable to send local notifications from my flutter app
我在我的应用程序中使用 flutter_local_notifications
依赖项在按下按钮后发送本地通知。在应用程序中,在执行按钮时,本地通知应该出现并且应用程序应该导航到第二个屏幕。但是,只有第二个操作正在执行并且没有显示通知。我参考了 from this YouTube tutorial 在我的应用程序中创建本地通知。
我的应用程序的 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
widget中本地通知功能的实现如下:
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,
),
),
),
The error shown in the debug console is this.
The sourcecode of the app in the Youtube Tutorial
我应该怎么做才能清除这个错误?
将您的图标添加到 [projectFolder]/android/app/src/main/res/drawable(例如 app_icon.png)并在此处使用该名称:
var initializationSettingsAndroid =
new AndroidInitializationSettings('@mipmap/ic_launcher');
我在我的应用程序中使用 flutter_local_notifications
依赖项在按下按钮后发送本地通知。在应用程序中,在执行按钮时,本地通知应该出现并且应用程序应该导航到第二个屏幕。但是,只有第二个操作正在执行并且没有显示通知。我参考了 from this YouTube tutorial 在我的应用程序中创建本地通知。
我的应用程序的 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
widget中本地通知功能的实现如下:
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,
),
),
),
The error shown in the debug console is this.
The sourcecode of the app in the Youtube Tutorial
我应该怎么做才能清除这个错误?
将您的图标添加到 [projectFolder]/android/app/src/main/res/drawable(例如 app_icon.png)并在此处使用该名称:
var initializationSettingsAndroid =
new AndroidInitializationSettings('@mipmap/ic_launcher');