From bf6966bb30b4923a8307206eeac9c55551e88576 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=8C=AF=E5=8D=87?= <359059686@qq.com> Date: Sat, 8 Nov 2025 16:50:24 +0800 Subject: [PATCH] =?UTF-8?q?feat=20:=20=E4=BD=BF=E7=94=A8EasyRefresh=20?= =?UTF-8?q?=E4=B8=8B=E6=8B=89=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 ++++ .../pages/enterprise_list_page.dart | 26 +++++++++++++++---- .../presentation/pages/problem_list_page.dart | 26 +++++++++++++++---- lib/main.dart | 24 +++++++++++++++++ 4 files changed, 71 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 68baec5..e84f4e2 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,11 @@ Image Picker: 用于从图库或相机选择图片。 HTTP/Dio: 网络请求库。推荐使用 Dio,因为它提供了更强大的拦截器、表单数据处理和错误处理功能。 +1.0.0 +feat : 问题功能 +1.0.1 +feat : 企业功能 + TODO// /// 定义了一个通用的 CRUD (Create, Read, Update, Delete) 仓库必须具备的核心能力 diff --git a/lib/app/features/enterprise/presentation/pages/enterprise_list_page.dart b/lib/app/features/enterprise/presentation/pages/enterprise_list_page.dart index 4b04b33..296f95e 100644 --- a/lib/app/features/enterprise/presentation/pages/enterprise_list_page.dart +++ b/lib/app/features/enterprise/presentation/pages/enterprise_list_page.dart @@ -1,3 +1,4 @@ +import 'package:easy_refresh/easy_refresh.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -181,7 +182,7 @@ class EnterpriseListPage extends GetView { /// 构建企业列表 Widget _buildEnterpriseList() { // 使用下拉刷新包裹列表 - return RefreshIndicator( + return EasyRefresh( onRefresh: () async => controller.loadAndSyncEnterprises(), child: Obx(() { // 3. 在加载中状态,直接显示加载动画(此时不可滚动是合理的) @@ -205,16 +206,31 @@ class EnterpriseListPage extends GetView { mainAxisAlignment: MainAxisAlignment.center, children: [ Icon( - Icons.folder_off_outlined, + Icons.search_off, size: 60.sp, color: Colors.grey[400], ), SizedBox(height: 16.h), Text( - '没有找到相关企业', + '未找到相关企业', style: TextStyle( - fontSize: 16.sp, - color: Colors.grey[600], + fontSize: 20.sp, + color: Colors.black87, + fontWeight: FontWeight.bold, + ), + maxLines: 3, + textAlign: TextAlign.center, + ), + Padding( + padding: EdgeInsetsGeometry.all(16.w), + child: Text( + '尝试调整您的筛选条件,或下拉页面以同步最新数据', + style: TextStyle( + fontSize: 18.sp, + color: Colors.grey[600], + ), + maxLines: 3, + textAlign: TextAlign.center, ), ), ], diff --git a/lib/app/features/problem/presentation/pages/problem_list_page.dart b/lib/app/features/problem/presentation/pages/problem_list_page.dart index db58d18..0f99434 100644 --- a/lib/app/features/problem/presentation/pages/problem_list_page.dart +++ b/lib/app/features/problem/presentation/pages/problem_list_page.dart @@ -1,3 +1,4 @@ +import 'package:easy_refresh/easy_refresh.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -274,7 +275,7 @@ class ProblemListPage extends GetView { /// 构建问题列表 Widget _buildProblemListList() { // 使用下拉刷新包裹列表 - return RefreshIndicator( + return EasyRefresh( onRefresh: () async => controller.loadAndSyncProblems(), child: Obx(() { // 3. 在加载中状态,直接显示加载动画(此时不可滚动是合理的) @@ -298,16 +299,31 @@ class ProblemListPage extends GetView { mainAxisAlignment: MainAxisAlignment.center, children: [ Icon( - Icons.folder_off_outlined, + Icons.search_off, size: 60.sp, color: Colors.grey[400], ), SizedBox(height: 16.h), Text( - '没有找到相关问题', + '未找到相关问题', style: TextStyle( - fontSize: 16.sp, - color: Colors.grey[600], + fontSize: 20.sp, + color: Colors.black87, + fontWeight: FontWeight.bold, + ), + maxLines: 3, + textAlign: TextAlign.center, + ), + Padding( + padding: EdgeInsetsGeometry.all(16.w), + child: Text( + '尝试调整您的筛选条件,或下拉页面以同步最新数据', + style: TextStyle( + fontSize: 18.sp, + color: Colors.grey[600], + ), + maxLines: 3, + textAlign: TextAlign.center, ), ), ], diff --git a/lib/main.dart b/lib/main.dart index f122b97..383e014 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,3 +1,4 @@ +import 'package:easy_refresh/easy_refresh.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; @@ -7,6 +8,29 @@ import 'package:problem_check_system/app/app.dart'; void main() async { // 确保 Flutter Binding 已初始化 WidgetsFlutterBinding.ensureInitialized(); + // --- 【核心代码】EasyRefresh 全局配置 --- + EasyRefresh.defaultHeaderBuilder = () => const ClassicHeader( + dragText: '下拉同步', + armedText: '释放同步', + readyText: '准备同步', + processingText: '正在同步...', + processedText: '同步完成', + noMoreText: '没有更多了', + failedText: '同步失败', + messageText: '上次同步于 %T', // %T 是一个占位符,会自动替换为时间 + ); + + EasyRefresh.defaultFooterBuilder = () => const ClassicFooter( + dragText: '上拉加载', + armedText: '释放加载', + readyText: '准备加载', + processingText: '正在加载...', + processedText: '加载完成', + noMoreText: '没有更多了', + failedText: '加载失败', + messageText: '上次更新于 %T', + ); + // --- 全局配置结束 --- // 设置应用为竖屏模式 SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp,