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';
|
|
|
|
|
2023-11-15 21:05:45 +00:00
|
|
|
class CircleManagementScreen extends StatelessWidget {
|
|
|
|
const CircleManagementScreen({super.key});
|
2023-04-18 23:39:52 +00:00
|
|
|
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
final manager = context
|
|
|
|
.watch<ActiveProfileSelector<ConnectionsManager>>()
|
|
|
|
.activeEntry
|
|
|
|
.value;
|
2023-11-15 21:05:45 +00:00
|
|
|
final circles = manager.getMyCircles();
|
|
|
|
circles.sort((g1, g2) => g1.name.compareTo(g2.name));
|
2023-04-18 23:39:52 +00:00
|
|
|
return Scaffold(
|
|
|
|
appBar: StandardAppBar.build(
|
|
|
|
context,
|
2023-11-15 21:05:45 +00:00
|
|
|
'Circles Management',
|
2023-04-18 23:39:52 +00:00
|
|
|
withHome: false,
|
|
|
|
actions: [
|
|
|
|
IconButton(
|
|
|
|
onPressed: () => context.push(
|
2023-11-15 21:05:45 +00:00
|
|
|
'${ScreenPaths.circleManagement}/new',
|
2023-04-18 23:39:52 +00:00
|
|
|
),
|
|
|
|
icon: const Icon(Icons.add),
|
|
|
|
),
|
|
|
|
],
|
|
|
|
),
|
|
|
|
body: Center(
|
|
|
|
child: RefreshIndicator(
|
|
|
|
onRefresh: () async {
|
2023-11-15 21:05:45 +00:00
|
|
|
manager.refreshCircles();
|
2023-04-18 23:39:52 +00:00
|
|
|
},
|
|
|
|
child: ResponsiveMaxWidth(
|
|
|
|
child: ListView.separated(
|
|
|
|
physics: const AlwaysScrollableScrollPhysics(),
|
|
|
|
itemBuilder: (context, index) {
|
2023-11-15 21:05:45 +00:00
|
|
|
final circle = circles[index];
|
2023-04-18 23:39:52 +00:00
|
|
|
return ListTile(
|
2023-11-15 21:05:45 +00:00
|
|
|
title: Text(circle.name),
|
2023-04-18 23:39:52 +00:00
|
|
|
onTap: () => context.push(
|
2023-11-15 21:05:45 +00:00
|
|
|
'${ScreenPaths.circleManagement}/show/${circle.id}'),
|
2023-04-18 23:39:52 +00:00
|
|
|
);
|
|
|
|
},
|
|
|
|
separatorBuilder: (_, __) => const Divider(),
|
2023-11-15 21:05:45 +00:00
|
|
|
itemCount: circles.length,
|
2023-04-18 23:39:52 +00:00
|
|
|
),
|
|
|
|
),
|
|
|
|
),
|
|
|
|
));
|
|
|
|
}
|
|
|
|
}
|