feat:增加闪灵功能

This commit is contained in:
2025-11-09 23:52:36 +08:00
parent 7c3d35eb18
commit 98248bf1ad
13 changed files with 760 additions and 65 deletions

123
lib/pages/flisp_page.dart Normal file
View File

@@ -0,0 +1,123 @@
import 'package:flisp_app/models/flisp.dart';
import 'package:flisp_app/provider/flisp_provider.dart';
import 'package:flisp_app/service/flisp_service.dart';
import 'package:flisp_app/utils/flisp_utils.dart';
import 'package:flisp_app/widgets/awesome_dialog.dart';
import 'package:flisp_app/widgets/flisp_form.dart';
import 'package:flisp_app/widgets/flisp_widget.dart';
import 'package:flutter/material.dart';
import 'package:flutter_form_builder/flutter_form_builder.dart';
import 'package:provider/provider.dart';
import 'package:flisp_app/widgets/common.dart';
class FlispPage extends StatefulWidget {
final VoidCallback? onAddPressed;
const FlispPage({super.key, this.onAddPressed});
@override
State<FlispPage> createState() => FlispPageState();
}
class FlispPageState extends State<FlispPage> {
final FlispService flispService = FlispService();
late List<Flisp> _flisps;
FlispTab _currentTab = FlispTab.all;
// 获取过滤后的待办事项
List<Flisp> get _activeFlisps => getActiveFlisps(_currentTab, _flisps);
void showAddDialog() {
_showDialog(false, null);
}
@override
void initState() {
super.initState();
_flisps = flispService.getAllFlisps();
}
@override
Widget build(BuildContext context) {
return buildBody(
child: Column(
children: [
// 选项卡
buildTabs(
currentTab: _currentTab,
onTabChanged: (value) {
setState(() {
_currentTab = value;
});
},
),
// 待办事项列表
Expanded(child: _buildActiveFlispList()),
],
),
);
}
Widget _buildActiveFlispList() {
return _activeFlisps.isEmpty
? buildEmptyState()
: buildFlispList(
flisps: _activeFlisps,
onEdit: (flisp) {
_showDialog(true, flisp);
},
);
}
// 显示对话框
void _showDialog(bool isEditing, Flisp? flisp) {
final flispProvider = Provider.of<FlispProvider>(context, listen: false);
if (isEditing) {
flispProvider.initForm(flisp!);
} else {
flispProvider.resetForm();
}
final formKey = GlobalKey<FormBuilderState>();
showAwesomeDialog(
context: context,
body: FlispForm(
formKey: formKey,
isEditing: isEditing,
initialFlisp: flisp,
),
onOk: () {
if (formKey.currentState!.saveAndValidate()) {
Navigator.of(context).pop();
_saveFlisp(isEditing, flispProvider.formItem);
}
},
onCancel: () {
flispProvider.resetForm();
},
);
}
// 保存待办事项
void _saveFlisp(bool isEditing, Flisp flisp) async {
late bool isSuccess;
if (isEditing) {
isSuccess = await flispService.updateFlisp(flisp);
} else {
isSuccess = await flispService.addFlisp(flisp);
}
setState(() {
_flisps = flispService.getAllFlisps();
});
if (isSuccess) {
showSuccessDialog(context, isEditing ? '更新成功' : '添加成功');
} else {
showErrorDialog(context, isEditing ? '更新失败' : '添加失败');
}
}
}