1
0
mirror of https://gitlab.com/comunic/comunicmobile synced 2024-11-30 00:36:28 +00:00
comunicmobile/lib/ui/widgets/tablet_mode/tablet_appbar_widget.dart
2020-05-06 18:54:32 +02:00

72 lines
2.0 KiB
Dart

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/icon_button_badge.dart';
import 'package:comunic/ui/widgets/safe_state.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<ComunicTabletAppBarWidget> {
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<NewNumberNotifsEvent>(
(d) => _unreadNotifications.notifications = d.newNum);
this.listenChangeState<NewNumberUnreadConversations>(
(d) => _unreadNotifications.conversations = d.newNum);
}
@override
Widget build(BuildContext context) {
return AppBar(
title: Text("Comunic"),
actions: <Widget>[
IconButtonWithBadge(
icon: Icon(Icons.notifications),
onPressed: () {},
number: _unreadNotifications.notifications,
),
IconButtonWithBadge(
icon: Icon(Icons.message),
onPressed: () {},
number: _unreadNotifications.conversations,
),
PopupMenuButton(itemBuilder: (c) => []),
],
);
}
}