投稿功能
This commit is contained in:
@@ -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),
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user