relatica/lib/screens/editor.dart

74 wiersze
2.0 KiB
Dart
Czysty Zwykły widok Historia

2022-11-17 16:04:14 +00:00
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'),
),
],
),
),
),
);
}
}