Post slug

This commit is contained in:
2025-08-17 12:47:00 +08:00
parent a04dffdfe8
commit 5d4b896f70
8 changed files with 56 additions and 23 deletions

View File

@@ -229,6 +229,24 @@ class ComposeSettingsSheet extends HookConsumerWidget {
crossAxisAlignment: CrossAxisAlignment.start,
spacing: 16,
children: [
// Slug field
TextField(
controller: state.contentController,
decoration: InputDecoration(
labelText: 'postSlug'.tr(),
hintText: 'postSlugHint'.tr(),
contentPadding: const EdgeInsets.symmetric(
vertical: 9,
horizontal: 16,
),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(12),
),
),
onTapOutside:
(_) => FocusManager.instance.primaryFocus?.unfocus(),
),
// Tags field
TextFieldTags(
textfieldTagsController: state.tagsController,
@@ -426,7 +444,6 @@ class ComposeSettingsSheet extends HookConsumerWidget {
padding: EdgeInsets.zero,
),
),
const Gap(16),
// Visibility setting
Container(

View File

@@ -27,6 +27,7 @@ class ComposeState {
final TextEditingController titleController;
final TextEditingController descriptionController;
final TextEditingController contentController;
final TextEditingController slugController;
final ValueNotifier<int> visibility;
final ValueNotifier<List<UniversalFile>> attachments;
final ValueNotifier<Map<int, double>> attachmentProgress;
@@ -45,6 +46,7 @@ class ComposeState {
required this.titleController,
required this.descriptionController,
required this.contentController,
required this.slugController,
required this.visibility,
required this.attachments,
required this.attachmentProgress,
@@ -107,6 +109,7 @@ class ComposeLogic {
text: originalPost?.description,
),
contentController: TextEditingController(text: originalPost?.content),
slugController: TextEditingController(text: originalPost?.slug),
visibility: ValueNotifier<int>(originalPost?.visibility ?? 0),
submitting: ValueNotifier<bool>(false),
attachmentProgress: ValueNotifier<Map<int, double>>({}),
@@ -139,6 +142,7 @@ class ComposeLogic {
titleController: TextEditingController(text: draft.title),
descriptionController: TextEditingController(text: draft.description),
contentController: TextEditingController(text: draft.content),
slugController: TextEditingController(text: draft.slug),
visibility: ValueNotifier<int>(draft.visibility),
submitting: ValueNotifier<bool>(false),
attachmentProgress: ValueNotifier<Map<int, double>>({}),
@@ -634,6 +638,8 @@ class ComposeLogic {
'title': state.titleController.text,
'description': state.descriptionController.text,
'content': state.contentController.text,
if (state.slugController.text.isNotEmpty)
'slug': state.slugController.text,
'visibility': state.visibility.value,
'attachments':
state.attachments.value