File tree Expand file tree Collapse file tree 7 files changed +48
-9
lines changed
Expand file tree Collapse file tree 7 files changed +48
-9
lines changed Original file line number Diff line number Diff line change @@ -33,8 +33,8 @@ class _HomePageState extends State<HomePage> {
3333 _exampleNotification? .onShow = () {
3434 print ('onShow ${_exampleNotification ?.identifier }' );
3535 };
36- _exampleNotification? .onClose = () {
37- print ('onClose ${_exampleNotification ?.identifier }' );
36+ _exampleNotification? .onClose = (closeReason ) {
37+ print ('onClose ${_exampleNotification ?.identifier } - $ closeReason ' );
3838 };
3939 _exampleNotification? .onClick = () {
4040 print ('onClick ${_exampleNotification ?.identifier }' );
@@ -53,8 +53,8 @@ class _HomePageState extends State<HomePage> {
5353 notification.onShow = () {
5454 print ('onShow ${notification .identifier }' );
5555 };
56- notification.onClose = () {
57- print ('onClose ${notification .identifier }' );
56+ notification.onClose = (closeReason ) {
57+ print ('onClose ${notification .identifier } - $ closeReason ' );
5858 };
5959 notification.onClick = () {
6060 print ('onClick ${notification .identifier }' );
Original file line number Diff line number Diff line change 11export 'src/local_notification_action.dart' ;
2+ export 'src/local_notification_close_reason.dart' ;
23export 'src/local_notification_listener.dart' ;
34export 'src/local_notification.dart' ;
45export 'src/local_notifier.dart' ;
Original file line number Diff line number Diff line change @@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
22import 'package:uuid/uuid.dart' ;
33
44import 'local_notification_action.dart' ;
5+ import 'local_notification_close_reason.dart' ;
56import 'local_notification_listener.dart' ;
67import 'local_notifier.dart' ;
78
@@ -24,7 +25,7 @@ class LocalNotification with LocalNotificationListener {
2425 List <LocalNotificationAction >? actions;
2526
2627 VoidCallback ? onShow;
27- VoidCallback ? onClose;
28+ ValueChanged < LocalNotificationCloseReason > ? onClose;
2829 VoidCallback ? onClick;
2930 ValueChanged <int >? onClickAction;
3031
@@ -96,11 +97,14 @@ class LocalNotification with LocalNotificationListener {
9697 }
9798
9899 @override
99- void onLocalNotificationClose (LocalNotification notification) {
100+ void onLocalNotificationClose (
101+ LocalNotification notification,
102+ LocalNotificationCloseReason closeReason,
103+ ) {
100104 if (identifier != notification.identifier || onClose == null ) {
101105 return ;
102106 }
103- onClose !();
107+ onClose !(closeReason );
104108 }
105109
106110 @override
Original file line number Diff line number Diff line change 1+ enum LocalNotificationCloseReason {
2+ userCanceled,
3+ timedOut,
4+ unknown,
5+ }
Original file line number Diff line number Diff line change 1+ import 'local_notification_close_reason.dart' ;
12import 'local_notification.dart' ;
23
34abstract class LocalNotificationListener {
45 void onLocalNotificationShow (LocalNotification notification) {}
5- void onLocalNotificationClose (LocalNotification notification) {}
6+ void onLocalNotificationClose (
7+ LocalNotification notification,
8+ LocalNotificationCloseReason closeReason,
9+ ) {}
610 void onLocalNotificationClick (LocalNotification notification) {}
711 void onLocalNotificationClickAction (
812 LocalNotification notification,
Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ import 'dart:io';
44import 'package:flutter/foundation.dart' ;
55import 'package:flutter/services.dart' ;
66
7+ import 'local_notification_close_reason.dart' ;
78import 'local_notification_listener.dart' ;
89import 'local_notification.dart' ;
910
@@ -35,7 +36,15 @@ class LocalNotifier {
3536 if (call.method == 'onLocalNotificationShow' ) {
3637 listener.onLocalNotificationShow (localNotification! );
3738 } else if (call.method == 'onLocalNotificationClose' ) {
38- listener.onLocalNotificationClose (localNotification! );
39+ LocalNotificationCloseReason closeReason =
40+ LocalNotificationCloseReason .values.firstWhere (
41+ (e) => describeEnum (e) == call.arguments['closeReason' ],
42+ orElse: () => LocalNotificationCloseReason .unknown,
43+ );
44+ listener.onLocalNotificationClose (
45+ localNotification! ,
46+ closeReason,
47+ );
3948 } else if (call.method == 'onLocalNotificationClick' ) {
4049 listener.onLocalNotificationClick (localNotification! );
4150 } else if (call.method == 'onLocalNotificationClickAction' ) {
Original file line number Diff line number Diff line change @@ -45,9 +45,25 @@ class CustomToastHandler : public IWinToastHandler {
4545 }
4646
4747 void toastDismissed (WinToastDismissalReason state) const {
48+ std::string closeReason = " unknown" ;
49+
50+ switch (state) {
51+ case UserCanceled:
52+ closeReason = " userCanceled" ;
53+ break ;
54+ case TimedOut:
55+ closeReason = " timedOut" ;
56+ break ;
57+ default :
58+ break ;
59+ }
60+
4861 flutter::EncodableMap args = flutter::EncodableMap ();
4962 args[flutter::EncodableValue (" notificationId" )] =
5063 flutter::EncodableValue (identifier);
64+ args[flutter::EncodableValue (" closeReason" )] =
65+ flutter::EncodableValue (closeReason);
66+
5167 channel->InvokeMethod (" onLocalNotificationClose" ,
5268 std::make_unique<flutter::EncodableValue>(args));
5369 }
You can’t perform that action at this time.
0 commit comments