Ver código fonte

[new]待办事项增加空数据显示

zk 1 ano atrás
pai
commit
26ceb28d15

BIN
assets/images/icon_no_task.webp


+ 1 - 0
assets/string/base/string.xml

@@ -97,4 +97,5 @@
     <string name="file_audio_duration_limit">录音时长不能超过5小时</string>
     <string name="file_import_fail">导入失败</string>
     <string name="file_importing">正在导入...</string>
+    <string name="agenda_no_data">暂无待办事项</string>
 </resources>

+ 59 - 30
lib/module/home/view.dart

@@ -69,13 +69,7 @@ class HomePage extends BasePage<HomePageController> {
                         ),
                       ),
                       buildTalkTodoTitle(),
-                      Obx(() {
-                        return SliverList.builder(
-                            itemBuilder: _builderAgendaItem,
-                            itemCount: controller.agendaList.length >= 10
-                                ? 10
-                                : controller.agendaList.length);
-                      }),
+                      buildTalkTodoContent(),
                       buildSeeMoreView(),
                     ],
                   ),
@@ -123,11 +117,10 @@ class HomePage extends BasePage<HomePageController> {
               child: _buildHeaderCard(
                   StringName.homeTalkImportAudio.tr,
                   StringName.homeTalkAnalyzeLocalAudio.tr,
-                  Assets.images.iconHomeTalkSelectCard.image().image,
-                  [
-                    "#5869ED".toColor(),
-                    "#6E8AF7".toColor(),
-                  ], onTap: () {
+                  Assets.images.iconHomeTalkSelectCard.image().image, [
+                "#5869ED".toColor(),
+                "#6E8AF7".toColor(),
+              ], onTap: () {
                 controller.onPickerAudioFile();
               }),
             ),
@@ -199,24 +192,27 @@ class HomePage extends BasePage<HomePageController> {
 
   SliverToBoxAdapter buildSeeMoreView() {
     return SliverToBoxAdapter(
-      child: Container(
-        alignment: Alignment.center,
-        padding: const EdgeInsets.only(top: 12, bottom: 36).w,
-        child: RichText(
-          text: TextSpan(
-            text: StringName.homeTalkTodo1.tr,
-            style:
-                TextStyle(color: ColorName.secondaryTextColor, fontSize: 12.sp),
-            children: <TextSpan>[
-              TextSpan(
-                  text: StringName.homeTalkTodo2.tr,
-                  style:
-                      TextStyle(color: ColorName.colorPrimary, fontSize: 12.sp),
-                  recognizer: TapGestureRecognizer()
-                    ..onTap = () {
-                      Get.toNamed(RoutePath.task);
-                    }),
-            ],
+      child: Visibility(
+        visible: controller.agendaList.isNotEmpty,
+        child: Container(
+          alignment: Alignment.center,
+          padding: const EdgeInsets.only(top: 12, bottom: 36).w,
+          child: RichText(
+            text: TextSpan(
+              text: StringName.homeTalkTodo1.tr,
+              style: TextStyle(
+                  color: ColorName.secondaryTextColor, fontSize: 12.sp),
+              children: <TextSpan>[
+                TextSpan(
+                    text: StringName.homeTalkTodo2.tr,
+                    style: TextStyle(
+                        color: ColorName.colorPrimary, fontSize: 12.sp),
+                    recognizer: TapGestureRecognizer()
+                      ..onTap = () {
+                        Get.toNamed(RoutePath.task);
+                      }),
+              ],
+            ),
           ),
         ),
       ),
@@ -637,4 +633,37 @@ class HomePage extends BasePage<HomePageController> {
       controller.requestDelete(item);
     });
   }
+
+  Widget buildTalkTodoContent() {
+    return Obx(() {
+      if (controller.agendaList.isEmpty) {
+        return SliverToBoxAdapter(child: buildAgendaEmptyView(50.h));
+      } else {
+        return SliverList.builder(
+            itemBuilder: _builderAgendaItem,
+            itemCount: controller.agendaList.length >= 10
+                ? 10
+                : controller.agendaList.length);
+      }
+    });
+  }
+}
+
+Widget buildAgendaEmptyView(double top) {
+  return Container(
+    width: double.infinity,
+    padding: EdgeInsets.symmetric(vertical: top),
+    child: Column(
+      children: [
+        SizedBox(
+            width: 100.w,
+            height: 100.w,
+            child: Assets.images.iconNoTask.image()),
+        SizedBox(height: 4.h),
+        Text(StringName.agendaNoData.tr,
+            style: TextStyle(
+                color: ColorName.secondaryTextColor, fontSize: 14.sp)),
+      ],
+    ),
+  );
 }

+ 12 - 7
lib/module/talk/summary/view.dart

@@ -10,6 +10,7 @@ import 'package:markdown/markdown.dart' as md;
 
 import '../../../data/bean/talks.dart';
 import '../../browser/view.dart';
+import '../../home/view.dart';
 import '../common_view.dart';
 import 'controller.dart';
 
@@ -80,13 +81,17 @@ class SummaryView extends BasePage<SummaryController> {
 
   Widget buildTodoView() {
     return Obx(() {
-      return Column(
-          children: controller.agendaAllList.map((agenda) {
-        return Padding(
-            padding: EdgeInsets.only(bottom: 8.h),
-            child: getTodoItemView(
-                agenda, (list) => getTalkAgendaNormalList(list)));
-      }).toList());
+      if (controller.agendaAllList.isEmpty) {
+        return buildAgendaEmptyView(65.h);
+      } else {
+        return Column(
+            children: controller.agendaAllList.map((agenda) {
+          return Padding(
+              padding: EdgeInsets.only(bottom: 8.h),
+              child: getTodoItemView(
+                  agenda, (list) => getTalkAgendaNormalList(list)));
+        }).toList());
+      }
     });
   }
 

+ 12 - 4
lib/module/talk/todo/view.dart

@@ -10,6 +10,7 @@ import '../../../data/bean/agenda.dart';
 import '../../../data/bean/talks.dart';
 import '../../../resource/assets.gen.dart';
 import '../../../utils/common_style.dart';
+import '../../home/view.dart';
 import '../common_view.dart';
 import 'controller.dart';
 
@@ -165,12 +166,19 @@ class TodoView extends BasePage<TodoController> {
         controller.talkBean.value?.status == TalkStatus.waitAnalysis) {
       return getTalkLoadingView();
     } else if (controller.talkBean.value?.status == TalkStatus.analysisSuccess) {
-      return ListView(
-        padding: EdgeInsets.only(left: 12.w, right: 12.w, bottom: 150.w),
-        children: [_buildMineTodoList(), _buildAllTaskView()],
-      );
+      return _buildTodoContent();
     } else {
       return Container();
     }
   }
+
+  Widget _buildTodoContent() {
+    if (controller.agendaAllList.isEmpty) {
+      return buildAgendaEmptyView(110.h);
+    }
+    return ListView(
+      padding: EdgeInsets.only(left: 12.w, right: 12.w, bottom: 150.w),
+      children: [_buildMineTodoList(), _buildAllTaskView()],
+    );
+  }
 }