51 lines
1.4 KiB
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);
|
|
}
|
|
}
|