投稿功能

This commit is contained in:
Developer
2026-03-30 18:15:59 +08:00
parent aeddc200a7
commit 820d35fe16
3 changed files with 340 additions and 4 deletions

View File

@@ -1,12 +1,15 @@
import 'dart:io' as io;
import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '../../../constants/app_constants.dart';
import '../../../utils/http/http_client.dart';
import 'tougao.dart';
/// 时间: 2026-03-30
/// 功能: 诗词投稿页面
/// 介绍: 用户提交诗词收录申请,支持相似度检测和人机验证
/// 最新变化: 新增投稿功能
/// 介绍: 用户提交诗词收录申请,支持相似度检测和投稿记录
/// 最新变化: 新增投稿记录功能
class ManuscriptPage extends StatefulWidget {
const ManuscriptPage({super.key});
@@ -137,6 +140,29 @@ class _ManuscriptPageState extends State<ManuscriptPage> {
}
}
Future<void> _saveManuscriptRecord() async {
try {
final prefs = await SharedPreferences.getInstance();
final record = ManuscriptRecord(
name: _nameController.text.trim(),
catename: _selectedCategory ?? '',
url: _urlController.text.trim(),
keywords: _keywordsController.text.trim(),
introduce: _introduceController.text.trim(),
platform: _getPlatform(),
submitTime: DateTime.now(),
);
final recordsJson = prefs.getStringList('manuscript_records') ?? [];
recordsJson.insert(0, jsonEncode(record.toJson()));
await prefs.setStringList(
'manuscript_records',
recordsJson.take(50).toList(),
);
} catch (e) {}
}
Future<void> _submitForm() async {
if (!_formKey.currentState!.validate()) return;
@@ -172,6 +198,7 @@ class _ManuscriptPageState extends State<ManuscriptPage> {
if (response.isSuccess) {
final data = response.jsonData;
if (data['ok'] == true) {
await _saveManuscriptRecord();
_showResultDialog(true, data['message'] ?? '✅ 提交成功!等待审核');
_resetForm();
} else {
@@ -220,7 +247,7 @@ class _ManuscriptPageState extends State<ManuscriptPage> {
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildConfirmItem('参考语句', _nameController.text),
_buildConfirmItem('投稿句子', _nameController.text),
_buildConfirmItem('分类', _selectedCategory ?? ''),
_buildConfirmItem('诗人和标题', _urlController.text),
_buildConfirmItem('关键词', _keywordsController.text),
@@ -346,6 +373,18 @@ class _ManuscriptPageState extends State<ManuscriptPage> {
icon: const Icon(Icons.arrow_back, color: AppConstants.primaryColor),
onPressed: () => Navigator.of(context).pop(),
),
actions: [
IconButton(
icon: const Icon(Icons.history, color: AppConstants.primaryColor),
tooltip: '投稿记录',
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const TougaoPage()),
);
},
),
],
),
body: Form(
key: _formKey,
@@ -704,7 +743,7 @@ class _ManuscriptPageState extends State<ManuscriptPage> {
controller: _introduceController,
maxLines: 5,
decoration: InputDecoration(
hintText: '请输入诗词详细介绍...',
hintText: '会说就多说几句...',
border: OutlineInputBorder(borderRadius: BorderRadius.circular(12)),
contentPadding: const EdgeInsets.all(16),
),