flutter_firebase_push_notification_provider 1.0.1 copy "flutter_firebase_push_notification_provider: ^1.0.1" to clipboard
flutter_firebase_push_notification_provider: ^1.0.1 copied to clipboard

A Flutter package that provides a unified interface for Firebase Cloud Messaging (FCM) push notifications. Handles permissions, token management, and message routing across all app states.

example/example.dart

import 'dart:async';

import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_firebase_push_notification_provider/flutter_firebase_push_notification_provider.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // Initialize Firebase first
  await Firebase.initializeApp();

  // Initialize the notification provider
  final notificationProvider = FlutterFirebasePushNotificationProvider();

  await notificationProvider.initialize(
    onTokenRefresh: (token, deviceInfo) async {
      // Send token to your server
      // Example: await myApi.updatePushToken(userId, token, deviceInfo.toMap());
      debugPrint('Token: $token');
      debugPrint('Device: ${deviceInfo.deviceName}');
    },
  );

  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: NotificationExample(),
    );
  }
}

class NotificationExample extends StatefulWidget {
  const NotificationExample({super.key});

  @override
  State<NotificationExample> createState() => _NotificationExampleState();
}

class _NotificationExampleState extends State<NotificationExample> {
  final _provider = FlutterFirebasePushNotificationProvider();
  StreamSubscription<Map<String, dynamic>>? _subscription;
  String _lastMessage = 'No messages yet';

  @override
  void initState() {
    super.initState();
    _listenToMessages();
  }

  void _listenToMessages() {
    if (_provider.isInitialized) {
      _subscription = _provider.messagesStream.listen((message) {
        setState(() {
          final title = message['notification']?['title'] ?? 'No title';
          final body = message['notification']?['body'] ?? 'No body';
          _lastMessage = '$title: $body';
        });
      });
    }
  }

  @override
  void dispose() {
    _subscription?.cancel();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Push Notifications'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Text('Initialized: ${_provider.isInitialized}'),
            const SizedBox(height: 8),
            Text('Has Permission: ${_provider.hasPermission}'),
            const SizedBox(height: 8),
            Text('Token: ${_provider.currentToken.isEmpty ? "Not available" : "${_provider.currentToken.substring(0, 20)}..."}'),
            const SizedBox(height: 24),
            const Text(
              'Last Message:',
              style: TextStyle(fontWeight: FontWeight.bold),
            ),
            const SizedBox(height: 8),
            Text(_lastMessage),
            const Spacer(),
            ElevatedButton(
              onPressed: () async {
                // Delete token on logout
                await _provider.deleteToken();
                if (context.mounted) {
                  ScaffoldMessenger.of(context).showSnackBar(
                    const SnackBar(content: Text('Token deleted')),
                  );
                }
              },
              child: const Text('Delete Token (Logout)'),
            ),
          ],
        ),
      ),
    );
  }
}
0
likes
130
points
34
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A Flutter package that provides a unified interface for Firebase Cloud Messaging (FCM) push notifications. Handles permissions, token management, and message routing across all app states.

License

unknown (license)

Dependencies

device_info_plus, firebase_core, firebase_messaging, flutter, package_info_plus

More

Packages that depend on flutter_firebase_push_notification_provider