新增通知按鈕功能

This commit is contained in:
jasonchenwork 2025-06-03 13:24:09 +08:00
parent 8d9f204a44
commit 0030e025b8

View File

@ -7,6 +7,76 @@ import 'reapair.dart';
import 'activity.dart';
import 'announcement.dart';
class NotificationIcon extends StatefulWidget {
const NotificationIcon({super.key});
@override
State<NotificationIcon> createState() => _NotificationIconState();
}
class _NotificationIconState extends State<NotificationIcon> {
List<String> _notifications = [];
int get _unreadCount => _notifications.length;
@override
void initState() {
super.initState();
_fetchNotifications(); // API
}
void _fetchNotifications() async {
// API
// await Future.delayed(const Duration(seconds: 1));
setState(() {
_notifications = ['4/15 管理費已出帳', '4/14 社區電梯保養通知', '4/13 新活動報名開始'];
});
}
@override
Widget build(BuildContext context) {
return Stack(
clipBehavior: Clip.none,
children: [
PopupMenuButton<String>(
icon: const Icon(Icons.notifications),
offset: const Offset(0, 40), // 👈 40px
onSelected: (value) {
ScaffoldMessenger.of(
context,
).showSnackBar(SnackBar(content: Text('點擊通知:$value')));
},
itemBuilder: (BuildContext context) {
return _notifications.map((String notification) {
return PopupMenuItem<String>(
value: notification,
child: Text(notification),
);
}).toList();
},
),
if (_unreadCount > 0)
Positioned(
right: 4,
top: 4,
child: Container(
padding: const EdgeInsets.all(2),
decoration: BoxDecoration(
color: Colors.red,
borderRadius: BorderRadius.circular(10),
),
constraints: const BoxConstraints(minWidth: 16, minHeight: 16),
child: Text(
'$_unreadCount',
style: const TextStyle(color: Colors.white, fontSize: 10),
textAlign: TextAlign.center,
),
),
),
],
);
}
}
class HomeContentPage extends StatelessWidget {
const HomeContentPage({super.key});
@ -23,7 +93,8 @@ class HomeContentPage extends StatelessWidget {
style: TextStyle(fontWeight: FontWeight.bold),
),
const SizedBox(width: 8),
Stack(
NotificationIcon(),
/*Stack(
children: [
IconButton(
icon: const Icon(Icons.notifications),
@ -52,7 +123,7 @@ class HomeContentPage extends StatelessWidget {
),
),
],
),
),*/
],
),
],