mirror of
https://gitlab.com/mysocialportal/relatica
synced 2024-10-18 21:43:31 +00:00
74 lines
2 KiB
Dart
74 lines
2 KiB
Dart
|
import 'package:flutter/material.dart';
|
||
|
import 'package:go_router/go_router.dart';
|
||
|
import 'package:provider/provider.dart';
|
||
|
|
||
|
import '../routes.dart';
|
||
|
import '../services/auth_service.dart';
|
||
|
import '../utils/snackbar_builder.dart';
|
||
|
|
||
|
class EditorScreen extends StatefulWidget {
|
||
|
final String id;
|
||
|
|
||
|
const EditorScreen({super.key, this.id = ''});
|
||
|
|
||
|
@override
|
||
|
State<EditorScreen> createState() => _EditorScreenState();
|
||
|
}
|
||
|
|
||
|
class _EditorScreenState extends State<EditorScreen> {
|
||
|
final controller = TextEditingController();
|
||
|
|
||
|
@override
|
||
|
Widget build(BuildContext context) {
|
||
|
final clientResult = context.read<AuthService>().currentClient;
|
||
|
if (clientResult.isFailure) {
|
||
|
context.goNamed(ScreenPaths.home);
|
||
|
}
|
||
|
final client = clientResult.value;
|
||
|
|
||
|
return Scaffold(
|
||
|
appBar: AppBar(
|
||
|
automaticallyImplyLeading: false,
|
||
|
title: Text(widget.id.isEmpty ? 'New Post' : 'Edit Post'),
|
||
|
),
|
||
|
body: Padding(
|
||
|
padding: const EdgeInsets.all(8.0),
|
||
|
child: Center(
|
||
|
child: Column(
|
||
|
mainAxisAlignment: MainAxisAlignment.start,
|
||
|
children: [
|
||
|
TextFormField(
|
||
|
maxLines: 10,
|
||
|
controller: controller,
|
||
|
),
|
||
|
ElevatedButton(
|
||
|
onPressed: () async {
|
||
|
if (controller.text.isEmpty) {
|
||
|
buildSnackbar(
|
||
|
context, "Can't submit an empty post/comment");
|
||
|
return;
|
||
|
}
|
||
|
final result = await client.createNewPost(controller.text);
|
||
|
|
||
|
if (result.isFailure) {
|
||
|
buildSnackbar(context, 'Error posting: ${result.error}');
|
||
|
return;
|
||
|
}
|
||
|
context.pop();
|
||
|
},
|
||
|
child: Text('Submit'),
|
||
|
),
|
||
|
ElevatedButton(
|
||
|
onPressed: () {
|
||
|
context.pop();
|
||
|
},
|
||
|
child: Text('Cancel'),
|
||
|
),
|
||
|
],
|
||
|
),
|
||
|
),
|
||
|
),
|
||
|
);
|
||
|
}
|
||
|
}
|