relatica/lib/screens/group_management_screen.dart

60 wiersze
1.8 KiB
Dart

import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:provider/provider.dart';
import '../controls/responsive_max_width.dart';
import '../controls/standard_appbar.dart';
import '../routes.dart';
import '../services/connections_manager.dart';
import '../utils/active_profile_selector.dart';
class GroupManagementScreen extends StatelessWidget {
const GroupManagementScreen({super.key});
@override
Widget build(BuildContext context) {
final manager = context
.watch<ActiveProfileSelector<ConnectionsManager>>()
.activeEntry
.value;
final groups = manager.getMyGroups();
groups.sort((g1, g2) => g1.name.compareTo(g2.name));
return Scaffold(
appBar: StandardAppBar.build(
context,
'Groups Management',
withHome: false,
actions: [
IconButton(
onPressed: () => context.push(
'${ScreenPaths.groupManagement}/new',
),
icon: const Icon(Icons.add),
),
],
),
body: Center(
child: RefreshIndicator(
onRefresh: () async {
manager.refreshGroups();
},
child: ResponsiveMaxWidth(
child: ListView.separated(
physics: const AlwaysScrollableScrollPhysics(),
itemBuilder: (context, index) {
final group = groups[index];
return ListTile(
title: Text(group.name),
onTap: () => context.push(
'${ScreenPaths.groupManagement}/show/${group.id}'),
);
},
separatorBuilder: (_, __) => const Divider(),
itemCount: groups.length,
),
),
),
));
}
}