kopia lustrzana https://gitlab.com/mysocialportal/relatica
59 wiersze
1.8 KiB
Dart
59 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();
|
||
|
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,
|
||
|
),
|
||
|
),
|
||
|
),
|
||
|
));
|
||
|
}
|
||
|
}
|