2023-04-18 23:39:52 +00:00
|
|
|
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();
|
2023-04-19 01:49:45 +00:00
|
|
|
groups.sort((g1, g2) => g1.name.compareTo(g2.name));
|
2023-04-18 23:39:52 +00:00
|
|
|
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,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
));
|
|
|
|
}
|
|
|
|
}
|