我正在使用awesome_notifications并希望在单击通知中的“标记为已读”时关闭应用程序并且不将应用程序置于前台。
应用程序正确地没有将应用程序置于前台,但通知不会被解雇。
下面是代码
import 'package:awesome_notifications/awesome_notifications.dart';
void main() {
WidgetsFlutterBinding.ensureInitialized();
AwesomeNotifications().initialize(
null,
[
NotificationChannel(
channelKey: 'basic_channel',
channelName: 'Basic notifications',
channelDescription: 'Notification channel for basic tests',
// defaultColor: Color(0xFF9D50DD),
// ledColor: Colors.white
)
],
debug: false);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
AwesomeNotifications().createNotification(
content: NotificationContent(
id: 10,
channelKey: 'basic_channel',
title: 'Simple Notification',
body: 'Simple body',
payload: {'uuid': 'user-profile-uuid'}),
actionButtons: [
NotificationActionButton(
key: 'READ',
label: 'Mark as read',
autoCancel: true,
buttonType: ActionButtonType.DisabledAction),
NotificationActionButton(
key: 'PROFILE',
label: 'Show Profile',
autoCancel: false,
enabled: true,
buttonType: ActionButtonType.Default)
]);
}
@override
void initState() {
super.initState();
AwesomeNotifications().isNotificationAllowed().then((isAllowed) {
if (!isAllowed) {
AwesomeNotifications().requestPermissionToSendNotifications();
}
});
AwesomeNotifications().actionStream.listen((receivedNotification) {
debugPrint(
" actionStream received " + receivedNotification.toString());
});
AwesomeNotifications().createdStream.listen((receivedNotification) {
debugPrint(
" createdStream received " + receivedNotification.toString());
});
AwesomeNotifications().displayedStream.listen((receivedNotification) {
debugPrint(
" displayedStream received " + receivedNotification.toString());
});
AwesomeNotifications().dismissedStream.listen((receivedNotification) {
debugPrint(
" dismissedStream received " + receivedNotification.toString());
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
//
title: Text(widget.title),
),
body: Center(
//
child: Column(
//
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.headline4,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}
由于“标记为已读”的按钮类型是 ActionButtonType.DisabledAction 它正确地不会将应用程序置于前台(要求之一),但“解雇”的第二个要求(即通知被清除,没有发生并且通知是入住。如何同时清除通知?