codenic_alarm 0.0.1-dev.8+1 copy "codenic_alarm: ^0.0.1-dev.8+1" to clipboard
codenic_alarm: ^0.0.1-dev.8+1 copied to clipboard

PlatformAndroid

A Flutter plugin for scheduling alarms on Android and IOS.

example/lib/main.dart

import 'dart:io';

import 'package:codenic_alarm/codenic_alarm.dart';
import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';

FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
    FlutterLocalNotificationsPlugin();

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await CodenicAlarm.instance.initialize();

  final initializationSettingsAndroid = AndroidInitializationSettings(
    'ic_launcher',
  );

  final initializationSettingsIOS = DarwinInitializationSettings(
    notificationCategories: [
      DarwinNotificationCategory(
        'demoCategory',
        options: {
          DarwinNotificationCategoryOption.customDismissAction,
        },
        actions: [
          DarwinNotificationAction.plain(
            'id_1',
            'Action 1',
            options: {
              DarwinNotificationActionOption.foreground,
            },
          ),
          DarwinNotificationAction.plain(
            'id_2',
            'Action 2',
          ),
        ],
      ),
    ],
  );

  final initializationSettings = InitializationSettings(
    android: initializationSettingsAndroid,
    iOS: initializationSettingsIOS,
  );

  await flutterLocalNotificationsPlugin.initialize(
    initializationSettings,
    onDidReceiveBackgroundNotificationResponse: notificationTapBackground,
  );

  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: Wrap(
            children: [
              FilledButton(
                child: const Text('Request Notification permission'),
                onPressed: () async {
                  // Permission.notification.request();
                  if (Platform.isIOS)
                    await flutterLocalNotificationsPlugin
                        .resolvePlatformSpecificImplementation<
                            IOSFlutterLocalNotificationsPlugin>()
                        ?.requestPermissions(
                          alert: true,
                          badge: true,
                          sound: true,
                        );
                  else if (Platform.isAndroid)
                    await flutterLocalNotificationsPlugin
                        .resolvePlatformSpecificImplementation<
                            AndroidFlutterLocalNotificationsPlugin>()
                        ?.requestExactAlarmsPermission();
                },
              ),
              FilledButton(
                child: const Text('Show alarm'),
                onPressed: () {
                  CodenicAlarm.instance.schedule(
                    delay: const Duration(seconds: 5),
                    alarmInfo: AlarmInfo(
                      id: 1,
                      title: 'Survey Reminder',
                      content: 'Report your health status',
                    ),
                  );
                },
              ),
              FilledButton(
                child: const Text('Has active alarm'),
                onPressed: () async {
                  final alarm = await CodenicAlarm.instance.activeAlarm();

                  if (alarm == null) {
                    print('No active alarm');
                  } else {
                    print('Active alarm: ${alarm.title} ${alarm.content}');
                  }
                },
              ),
              FilledButton(
                child: const Text('Hide alarm'),
                onPressed: () {
                  CodenicAlarm.instance.dismissAlarm();
                },
              ),
              FilledButton(
                child: const Text('Cancel all alarm'),
                onPressed: () {
                  CodenicAlarm.instance.cancelAll();
                },
              ),
              FilledButton(
                onPressed: () async {
                  print('AAAA');
                  final notificationDetailsIOS = DarwinNotificationDetails(
                    presentBanner: true,
                    categoryIdentifier: 'demoCategory',
                    presentSound: true,
                    threadIdentifier: '1',
                    interruptionLevel: InterruptionLevel.critical,
                    presentAlert: true,
                    presentList: true,
                  );

                  await flutterLocalNotificationsPlugin.show(
                    1,
                    'Survey Reminder',
                    '(10:45PM next. Long press to dismiss) Dive into your Q&A Questionnaires!',
                    NotificationDetails(
                      iOS: notificationDetailsIOS,
                    ),
                  );

                  print('AAAA2');
                },
                child: Text('Send notification'),
              ),
            ],
          ),
        ),
      ),
      builder: (context, child) {
        return child!;
      },
    );
  }
}

@pragma('vm:entry-point')
void notificationTapBackground(NotificationResponse notificationResponse) {
  // handle action
}
1
likes
120
pub points
32%
popularity

Publisher

verified publishercodenic.dev

A Flutter plugin for scheduling alarms on Android and IOS.

Documentation

API reference

License

MIT (LICENSE)

Dependencies

android_alarm_manager_plus, flutter, plugin_platform_interface, shared_preferences

More

Packages that depend on codenic_alarm