I am using awesome_notifications and want to dismiss as well as not bring the app in foreground when the 'Mark as read' is clicked in the notification.
App correctly not bring the app in foreground , but the notification does not get dismissed.
Below is the code
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),
),
);
}
}
How can the notification can also be dismissed ? Before and after
As buttonType for 'Mark as read' is ActionButtonType.DisabledAction it correctly does not bring the application in the foreground( one of the requirement), but the second requirement of 'dismissing' ( ie. notification being cleared, is not occurring and notification is staying. How the notification be cleared at same time ?