Add notification permission flow in settings
This commit is contained in:
@@ -59,6 +59,15 @@ class LocalNotificationsReminderScheduler implements ReminderScheduler {
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> requestPermissions() async {
|
||||
if (!_supportsSchedulingPlatform()) {
|
||||
return false;
|
||||
}
|
||||
await _driver.ensureInitialized();
|
||||
return _driver.requestPermissions();
|
||||
}
|
||||
|
||||
DateTimeComponents? _repeatComponents(ReminderCadence cadence) {
|
||||
return switch (cadence) {
|
||||
ReminderCadence.daily => DateTimeComponents.time,
|
||||
@@ -107,6 +116,8 @@ abstract class ReminderNotificationsDriver {
|
||||
required DateTimeComponents? repeatComponents,
|
||||
required String payload,
|
||||
});
|
||||
|
||||
Future<bool> requestPermissions();
|
||||
}
|
||||
|
||||
class FlutterReminderNotificationsDriver
|
||||
@@ -148,6 +159,38 @@ class FlutterReminderNotificationsDriver
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<bool> requestPermissions() async {
|
||||
if (defaultTargetPlatform == TargetPlatform.android) {
|
||||
return await _plugin
|
||||
.resolvePlatformSpecificImplementation<
|
||||
AndroidFlutterLocalNotificationsPlugin
|
||||
>()
|
||||
?.requestNotificationsPermission() ??
|
||||
false;
|
||||
}
|
||||
|
||||
if (defaultTargetPlatform == TargetPlatform.iOS) {
|
||||
return await _plugin
|
||||
.resolvePlatformSpecificImplementation<
|
||||
IOSFlutterLocalNotificationsPlugin
|
||||
>()
|
||||
?.requestPermissions(alert: true, badge: true, sound: true) ??
|
||||
false;
|
||||
}
|
||||
|
||||
if (defaultTargetPlatform == TargetPlatform.macOS) {
|
||||
return await _plugin
|
||||
.resolvePlatformSpecificImplementation<
|
||||
MacOSFlutterLocalNotificationsPlugin
|
||||
>()
|
||||
?.requestPermissions(alert: true, badge: true, sound: true) ??
|
||||
false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
Future<void> _initialize() async {
|
||||
await _plugin.initialize(
|
||||
settings: const InitializationSettings(
|
||||
|
||||
Reference in New Issue
Block a user