mirror of
https://gitlab.com/famedly/fluffychat.git
synced 2024-11-05 03:29:30 +01:00
59 lines
1.9 KiB
Dart
59 lines
1.9 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
import 'package:matrix/matrix.dart';
|
|
|
|
import '../config/app_config.dart';
|
|
import 'matrix.dart';
|
|
|
|
class UnreadBadgeBackButton extends StatelessWidget {
|
|
final String roomId;
|
|
|
|
const UnreadBadgeBackButton({
|
|
Key? key,
|
|
required this.roomId,
|
|
}) : super(key: key);
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Stack(
|
|
children: [
|
|
const Center(child: BackButton()),
|
|
StreamBuilder(
|
|
stream: Matrix.of(context).client.onSync.stream,
|
|
builder: (context, _) {
|
|
final unreadCount = Matrix.of(context)
|
|
.client
|
|
.rooms
|
|
.where((r) =>
|
|
r.id != roomId &&
|
|
(r.isUnread || r.membership == Membership.invite))
|
|
.length;
|
|
return unreadCount > 0
|
|
? Align(
|
|
alignment: Alignment.bottomRight,
|
|
child: Container(
|
|
padding: const EdgeInsets.all(4),
|
|
margin: const EdgeInsets.only(bottom: 4, right: 8),
|
|
decoration: BoxDecoration(
|
|
color: Theme.of(context).colorScheme.primaryContainer,
|
|
borderRadius:
|
|
BorderRadius.circular(AppConfig.borderRadius),
|
|
),
|
|
child: Text(
|
|
'$unreadCount',
|
|
style: TextStyle(
|
|
fontSize: 12,
|
|
color: Theme.of(context)
|
|
.colorScheme
|
|
.onPrimaryContainer,
|
|
),
|
|
),
|
|
),
|
|
)
|
|
: Container();
|
|
}),
|
|
],
|
|
);
|
|
}
|
|
}
|