diff --git a/lib/screens/pages/feed_page.dart b/lib/screens/pages/feed_page.dart index a345717..8d77ebc 100644 --- a/lib/screens/pages/feed_page.dart +++ b/lib/screens/pages/feed_page.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import '../../services/notification_service.dart'; class FeedPage extends StatefulWidget { @override @@ -106,17 +105,6 @@ class _FeedPageState extends State { }, ), ), - floatingActionButton: FloatingActionButton( - onPressed: () async { - final token = await NotificationService().getToken(); - ScaffoldMessenger.of(context).showSnackBar( - SnackBar(content: Text('FCM Token: ${token ?? "Not available"}')), - ); - }, - backgroundColor: Color(0xFF6A4C93), - child: Icon(Icons.notifications, color: Colors.white), - tooltip: 'Show FCM Token', - ), ); } } diff --git a/lib/screens/pages/profile_page.dart b/lib/screens/pages/profile_page.dart index a7a1e5e..f962c7f 100644 --- a/lib/screens/pages/profile_page.dart +++ b/lib/screens/pages/profile_page.dart @@ -1,6 +1,62 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import '../../services/notification_service.dart'; + +class ProfilePage extends StatefulWidget { + @override + _ProfilePageState createState() => _ProfilePageState(); +} + +class _ProfilePageState extends State { + String? fcmToken; + final TextEditingController _tokenController = TextEditingController(); + bool isLoading = false; + + @override + void initState() { + super.initState(); + _loadFCMToken(); + } + + @override + void dispose() { + _tokenController.dispose(); + super.dispose(); + } + + Future _loadFCMToken() async { + setState(() { + isLoading = true; + }); + + try { + final token = await NotificationService().getToken(); + setState(() { + fcmToken = token; + _tokenController.text = token ?? 'Token not available'; + isLoading = false; + }); + } catch (e) { + setState(() { + fcmToken = null; + _tokenController.text = 'Error loading token: $e'; + isLoading = false; + }); + } + } + + Future _copyToClipboard() async { + if (fcmToken != null && fcmToken!.isNotEmpty) { + await Clipboard.setData(ClipboardData(text: fcmToken!)); + ScaffoldMessenger.of(context).showSnackBar( + SnackBar( + content: Text('FCM Token copied to clipboard'), + backgroundColor: Color(0xFF6A4C93), + ), + ); + } + } -class ProfilePage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( @@ -22,13 +78,95 @@ class ProfilePage extends StatelessWidget { ), ), ), - body: Center( - child: Text( - 'This is the Profile Page', - style: TextStyle( - fontSize: 24, - fontWeight: FontWeight.w500, - ), + body: Padding( + padding: EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + 'Development Tools', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.w600, + color: Color(0xFF6A4C93), + ), + ), + SizedBox(height: 16), + + Text( + 'FCM Token:', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.w500, + color: Colors.black87, + ), + ), + SizedBox(height: 8), + + if (isLoading) + Center( + child: CircularProgressIndicator( + valueColor: AlwaysStoppedAnimation(Color(0xFF6A4C93)), + ), + ) + else + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + decoration: BoxDecoration( + border: Border.all(color: Colors.grey[300]!), + borderRadius: BorderRadius.circular(8), + ), + child: TextField( + controller: _tokenController, + readOnly: true, + maxLines: 4, + style: TextStyle( + fontSize: 12, + fontFamily: 'monospace', + ), + decoration: InputDecoration( + border: InputBorder.none, + contentPadding: EdgeInsets.all(12), + hintText: 'FCM Token will appear here...', + ), + ), + ), + SizedBox(height: 8), + + Row( + children: [ + ElevatedButton.icon( + onPressed: fcmToken != null ? _copyToClipboard : null, + icon: Icon(Icons.copy, size: 18), + label: Text('Copy Token'), + style: ElevatedButton.styleFrom( + backgroundColor: Color(0xFF6A4C93), + foregroundColor: Colors.white, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + ), + ), + ), + SizedBox(width: 12), + OutlinedButton.icon( + onPressed: _loadFCMToken, + icon: Icon(Icons.refresh, size: 18), + label: Text('Refresh'), + style: OutlinedButton.styleFrom( + foregroundColor: Color(0xFF6A4C93), + side: BorderSide(color: Color(0xFF6A4C93)), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + ), + ), + ), + ], + ), + ], + ), + ], ), ), );