AI 接入 V1.0

UI更新
This commit is contained in:
2026-09-24 14:24:34 +08:00
parent 34bc2e04b0
commit 9a144f159f
65 changed files with 1195 additions and 196 deletions
+5 -4
View File
@@ -9,6 +9,7 @@ import '../../utils/date_util.dart';
import '../../utils/toast.dart';
import '../../widgets/category_picker_grid.dart';
import '../../widgets/state_views.dart';
import '../../widgets/cute_icon.dart';
/// 账单编辑页(复刻 uniApp pages/bill/detail.vue 的编辑能力,并补上删除)
class BillEditPage extends ConsumerStatefulWidget {
@@ -117,9 +118,9 @@ class _BillEditPageState extends ConsumerState<BillEditPage> {
Widget _typeSelector(BillEditState state, BillEditNotifier notifier) {
return Row(
children: [
_typeCard('📤', '支出', 1, state, notifier),
_typeCard('expense', '支出', 1, state, notifier),
const SizedBox(width: 10),
_typeCard('📥', '收入', 2, state, notifier),
_typeCard('income', '收入', 2, state, notifier),
],
);
}
@@ -149,7 +150,7 @@ class _BillEditPageState extends ConsumerState<BillEditPage> {
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(icon, style: const TextStyle(fontSize: 20)),
CuteIcon(icon, size: 22),
const SizedBox(width: 8),
Text(
label,
@@ -314,7 +315,7 @@ class _BillEditPageState extends ConsumerState<BillEditPage> {
try {
await notifier.save();
if (!mounted) return;
showToast(context, '✅ 已保存');
showToast(context, '已保存', icon: 'check');
Navigator.of(context).pop();
} on ApiException catch (e) {
if (mounted) showToast(context, e.message, error: true);
+2 -1
View File
@@ -16,6 +16,7 @@ import 'bill_statistics_page.dart';
import 'widgets/bill_group_card.dart';
import 'widgets/budget_card.dart';
import 'widgets/month_switcher.dart';
import '../../widgets/cute_icon.dart';
/// 记账模块的首页:月份切换 + 本月汇总 + 预算环 + 按日期分组的账单列表。
///
@@ -184,7 +185,7 @@ class BillHomePage extends ConsumerWidget {
child: const Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('🎯 ', style: TextStyle(fontSize: 14)),
CuteIcon('target', size: 15),
Text(
'仅可查看本月预算',
style: TextStyle(fontSize: 13, color: Color(0xFF8D6E63)),
+2 -1
View File
@@ -4,6 +4,7 @@ import '../../../models/bill.dart';
import '../../../utils/amount_util.dart';
import '../../../utils/bill_grouping.dart';
import '../../../utils/date_util.dart';
import '../../../widgets/cute_icon.dart';
/// 单日分组卡:组头(日期 + 分开的支出/收入小计)+ 账单条目
class BillGroupCard extends StatelessWidget {
@@ -91,7 +92,7 @@ class _BillTile extends StatelessWidget {
color: Color(0xFFFBEEDD),
),
alignment: Alignment.center,
child: Text(bill.categoryIcon, style: const TextStyle(fontSize: 19)),
child: CuteIcon(bill.categoryIcon, size: 21),
),
const SizedBox(width: 12),
Expanded(
+5 -2
View File
@@ -3,6 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../../../models/budget.dart';
import '../../../utils/amount_util.dart';
import '../../../widgets/cute_icon.dart';
import '../../../widgets/donut_chart.dart';
import '../../../widgets/state_views.dart';
@@ -30,7 +31,7 @@ class BudgetCard extends StatelessWidget {
Widget _noBudget() {
return const EmptyView(
icon: '🎯',
icon: 'target',
title: '本月未设置预算',
tip: '可在「我的 → 预算设置」中设置',
padding: EdgeInsets.symmetric(vertical: 20),
@@ -110,7 +111,9 @@ class BudgetCard extends StatelessWidget {
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const Text('💰 日均可用 ', style: TextStyle(fontSize: 13, color: Color(0xFF6D4C41))),
const CuteIcon('target', size: 15),
const SizedBox(width: 5),
const Text('日均可用 ', style: TextStyle(fontSize: 13, color: Color(0xFF6D4C41))),
Text(
'¥${formatAmount(info.remainingDaily)}',
style: const TextStyle(
@@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import '../../../models/statistics_response.dart';
import '../../../utils/amount_util.dart';
import '../../../widgets/cute_icon.dart';
/// 分类排行:emoji + 名称 + 进度条 + 金额 + 占比
class CategoryRankList extends StatelessWidget {
@@ -50,7 +51,7 @@ class CategoryRankList extends StatelessWidget {
children: [
Row(
children: [
Text(item.categoryIcon, style: const TextStyle(fontSize: 16)),
CuteIcon(item.categoryIcon, size: 18),
const SizedBox(width: 8),
Expanded(
child: Text(