mirror of
https://gitlab.com/mysocialportal/relatica
synced 2024-10-19 16:23:37 +00:00
75 lines
2.2 KiB
Dart
75 lines
2.2 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:go_router/go_router.dart';
|
|
import 'package:provider/provider.dart';
|
|
|
|
import '../controls/padding.dart';
|
|
import '../controls/standard_appbar.dart';
|
|
import '../services/connections_manager.dart';
|
|
import '../utils/active_profile_selector.dart';
|
|
import '../utils/snackbar_builder.dart';
|
|
|
|
class GroupCreateScreen extends StatefulWidget {
|
|
GroupCreateScreen({super.key});
|
|
|
|
@override
|
|
State<GroupCreateScreen> createState() => _GroupCreateScreenState();
|
|
}
|
|
|
|
class _GroupCreateScreenState extends State<GroupCreateScreen> {
|
|
final groupTextController = TextEditingController();
|
|
|
|
Future<void> createGroup(ConnectionsManager manager) async {
|
|
if (groupTextController.text.isEmpty) {
|
|
buildSnackbar(context, "Group name can't be empty");
|
|
return;
|
|
}
|
|
|
|
final result = await manager.createGroup(groupTextController.text);
|
|
if (context.mounted) {
|
|
result.match(
|
|
onSuccess: (_) => context.canPop() ? context.pop() : null,
|
|
onError: (error) {
|
|
buildSnackbar(context, 'Error trying to create new group: $error');
|
|
});
|
|
}
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final manager = context
|
|
.watch<ActiveProfileSelector<ConnectionsManager>>()
|
|
.activeEntry
|
|
.value;
|
|
|
|
return Scaffold(
|
|
appBar: StandardAppBar.build(
|
|
context,
|
|
'New group',
|
|
withHome: false,
|
|
),
|
|
body: Padding(
|
|
padding: const EdgeInsets.all(8.0),
|
|
child: Column(
|
|
children: [
|
|
TextFormField(
|
|
controller: groupTextController,
|
|
textCapitalization: TextCapitalization.sentences,
|
|
decoration: InputDecoration(
|
|
labelText: 'Group Name',
|
|
border: OutlineInputBorder(
|
|
borderSide: const BorderSide(),
|
|
borderRadius: BorderRadius.circular(5.0),
|
|
),
|
|
),
|
|
),
|
|
const VerticalPadding(),
|
|
ElevatedButton(
|
|
onPressed: () => createGroup(manager),
|
|
child: const Text('Create'),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|