import 'package:comunic/helpers/events_helper.dart'; import 'package:comunic/helpers/notifications_helper.dart'; import 'package:comunic/models/count_unread_notifications.dart'; import 'package:comunic/ui/widgets/safe_state.dart'; import 'package:comunic/ui/widgets/tablet_mode/appbar_custom_dropdown_widget.dart'; import 'package:comunic/utils/ui_utils.dart'; import 'package:flutter/material.dart'; /// Comunic tablet AppBar widget /// /// @author Pierre Hubert class ComunicTabletAppBarWidget extends StatefulWidget implements PreferredSizeWidget { @override _ComunicTabletAppBarWidgetState createState() => _ComunicTabletAppBarWidgetState(); @override Size get preferredSize => Size.fromHeight(kToolbarHeight); } class _ComunicTabletAppBarWidgetState extends SafeState { var _unreadNotifications = CountUnreadNotifications(notifications: 0, conversations: 0); void _refreshCountUnread() async { try { final count = await NotificationsHelper().countUnread(); setState(() { _unreadNotifications = count; }); } catch (e, s) { print("Could not refresh the number of unread notifications: $e\n$s"); } } @override void initState() { super.initState(); _refreshCountUnread(); // Listen to notifications number update this.listenChangeState( (d) => _unreadNotifications.notifications = d.newNum); this.listenChangeState( (d) => _unreadNotifications.conversations = d.newNum); } @override Widget build(BuildContext context) { return AppBar( title: Text("Comunic"), actions: [ AppBarCustomDropDownWidget( icon: Icon(Icons.notifications), notificationsBadge: _unreadNotifications.notifications, onBuildOverlay: (c) => buildCenteredProgressBar(), ), AppBarCustomDropDownWidget( icon: Icon(Icons.message), notificationsBadge: _unreadNotifications.conversations, onBuildOverlay: (c) => Text("hello world"), ), PopupMenuButton(itemBuilder: (c) => []), ], ); } }