// 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 createState() => _TokenMonitor(); } class _TokenMonitor extends State { String? _token; late Stream _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); } }