flutter-freaccess-hub/lib/backend/notification/token_monitor.dart

51 lines
1.4 KiB
Dart

// Copyright 2022, the Chromium project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
// ignore_for_file: require_trailing_commas
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';
/// Manages & returns the users FCM token.
///
/// Also monitors token refreshes and updates state.
class TokenMonitor extends StatefulWidget {
// ignore: public_member_api_docs
const TokenMonitor(this._builder, {super.key});
final Widget Function(String? token) _builder;
@override
State<StatefulWidget> createState() => _TokenMonitor();
}
class _TokenMonitor extends State<TokenMonitor> {
String? _token;
late Stream<String> _tokenStream;
void setToken(String? token) {
print('FCM Token: $token');
setState(() {
_token = token;
});
}
@override
void initState() {
super.initState();
FirebaseMessaging.instance
.getToken(
vapidKey:
'BNKkaUWxyP_yC_lki1kYazgca0TNhuzt2drsOrL6WrgGbqnMnr8ZMLzg_rSPDm6HKphABS0KzjPfSqCXHXEd06Y')
.then(setToken);
_tokenStream = FirebaseMessaging.instance.onTokenRefresh;
_tokenStream.listen(setToken);
}
@override
Widget build(BuildContext context) {
return widget._builder(_token);
}
}