Pārlūkot izejas kodu

[new]增加启屏页

zk 1 gadu atpakaļ
vecāks
revīzija
5a84971bd0

BIN
assets/images/bg_splash.webp


BIN
assets/images/icon_splash_logo.webp


BIN
assets/images/icon_splash_title.webp


+ 2 - 2
lib/data/consts/constants.dart

@@ -1,7 +1,7 @@
 class Constants {
   Constants._();
 
-  static const String env = envDev;
+  static const String env = envTest;
 
   static const String envDev = 'dev';
 
@@ -11,7 +11,7 @@ class Constants {
 
   static const String _devBaseUrl = "http://192.168.10.230:8880";
 
-  static const String _testBaseUrl = "http://test-xxxxx.xxxxx.xyz";
+  static const String _testBaseUrl = "https://central-test.atmob.com";
 
   static const String _prodBaseUrl = "http://xxxx.litoxxxxxlive.xyz";
 

+ 21 - 0
lib/module/files/controller.dart

@@ -3,12 +3,15 @@ import 'package:electronic_assistant/data/repositories/account_repository.dart';
 import 'package:electronic_assistant/data/repositories/talk_repository.dart';
 import 'package:electronic_assistant/utils/error_handler.dart';
 import 'package:flutter/widgets.dart';
+import 'package:get/get.dart';
 import 'package:get/get_rx/src/rx_types/rx_types.dart';
 import 'package:pull_to_refresh/pull_to_refresh.dart';
 
 import '../../data/api/response/example_info_response.dart';
 import '../../data/bean/talks.dart';
 import '../../data/repositories/config_repository.dart';
+import '../../resource/string.gen.dart';
+import '../../utils/toast_util.dart';
 
 class FilesController extends BaseController {
   final refreshController = RefreshController(initialRefresh: false);
@@ -59,4 +62,22 @@ class FilesController extends BaseController {
   void onLoadMoreTalkData() {
     requestTalkData(page: ++page);
   }
+
+  void requestName(String? newName, TalkBean bean) {
+    talkRepository.talkRename(bean.id, newName).then((data) {
+      bean.title.value = newName;
+      ToastUtil.showToast(StringName.talkRenameSuccess.tr);
+    }).catchError((error) {
+      ErrorHandler.toastError(error, message: StringName.talkRenameFail.tr);
+    });
+  }
+
+  void requestDelete(TalkBean item) {
+    talkRepository.talkDelete(item.id).then((data) {
+      onRefreshData();
+      ToastUtil.showToast(StringName.talkDeleteSuccess.tr);
+    }).catchError((error) {
+      ErrorHandler.toastError(error, message: StringName.talkDeleteFail.tr);
+    });
+  }
 }

+ 30 - 1
lib/module/files/view.dart

@@ -12,6 +12,10 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:pull_to_refresh/pull_to_refresh.dart';
 
+import '../../data/repositories/account_repository.dart';
+import '../../dialog/rename_dialog.dart';
+import '../../dialog/talk_delete_dialog.dart';
+import '../../popup/talk_popup.dart';
 import '../../resource/assets.gen.dart';
 
 class FilesPage extends BasePage<FilesController> {
@@ -167,6 +171,17 @@ class FilesPage extends BasePage<FilesController> {
       return Padding(
           padding: EdgeInsets.only(bottom: 8.w),
           child: GestureDetector(
+            onLongPressStart: (details) {
+              if (!accountRepository.isLogin.value) {
+                return;
+              }
+              showTalkPopup(details.globalPosition, Alignment.bottomRight,
+                  onRename: () {
+                showRenameTalkDialog(talkBean);
+              }, onDelete: () {
+                showDeleteTalkDialog(talkBean);
+              });
+            },
             onTap: () {
               TalkPage.start(talkBean);
             },
@@ -207,7 +222,7 @@ class FilesPage extends BasePage<FilesController> {
                                 color: talkBean.status.value ==
                                         TalkStatus.analysisFail
                                     ? "#F5574E".toColor()
-                                        : ColorName.secondaryTextColor)),
+                                    : ColorName.secondaryTextColor)),
                         Container(
                           margin: EdgeInsets.only(top: 6.w),
                           child: Row(
@@ -238,4 +253,18 @@ class FilesPage extends BasePage<FilesController> {
           ));
     });
   }
+
+  void showRenameTalkDialog(TalkBean item) {
+    reNameDialog(StringName.talkRenameTitle.tr, item.title.value,
+        hintTxt: StringName.talkRenameTitleHint.tr,
+        maxLength: 15, returnBuilder: (newName) {
+      controller.requestName(newName, item);
+    });
+  }
+
+  void showDeleteTalkDialog(TalkBean item) {
+    talkDeleteDialog(item.id, item.title.value, returnBuilder: () {
+      controller.requestDelete(item);
+    });
+  }
 }

+ 8 - 2
lib/module/login/view.dart

@@ -1,5 +1,7 @@
 import 'package:electronic_assistant/base/base_page.dart';
+import 'package:electronic_assistant/data/consts/Constants.dart';
 import 'package:electronic_assistant/data/repositories/account_repository.dart';
+import 'package:electronic_assistant/module/browser/view.dart';
 import 'package:electronic_assistant/resource/assets.gen.dart';
 import 'package:electronic_assistant/resource/colors.gen.dart';
 import 'package:electronic_assistant/utils/expand.dart';
@@ -217,7 +219,9 @@ class LoginPage extends BasePage<LoginController> {
             ),
           ),
           GestureDetector(
-            onTap: () {},
+            onTap: () {
+              BrowserPage.start(Constants.privacyPolicy);
+            },
             child: Text(
               "《隐私政策》",
               style: TextStyle(
@@ -234,7 +238,9 @@ class LoginPage extends BasePage<LoginController> {
             ),
           ),
           GestureDetector(
-            onTap: () {},
+            onTap: () {
+              BrowserPage.start(Constants.userAgreement);
+            },
             child: Text(
               "《用户使用协议》",
               style: TextStyle(

+ 33 - 7
lib/module/splash/view.dart

@@ -1,7 +1,10 @@
 import 'dart:async';
 
 import 'package:electronic_assistant/base/base_page.dart';
+import 'package:electronic_assistant/dialog/alert_dialog.dart';
+import 'package:electronic_assistant/resource/assets.gen.dart';
 import 'package:flutter/material.dart';
+import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 
 import '../../router/app_pages.dart';
@@ -9,18 +12,41 @@ import '../../router/app_pages.dart';
 class SplashPage extends BasePage {
   const SplashPage({super.key});
 
-  final splashDelayedTime = 1;
+  final splashDelayedTime = 2;
 
   @override
   Widget buildBody(BuildContext context) {
     Timer(Duration(seconds: splashDelayedTime), () {
       Get.offNamed(RoutePath.mainTab);
     });
-    return GestureDetector(
-        child: const Center(
-            child: Text(
-      '启屏页',
-      style: TextStyle(fontSize: 36),
-    )));
+    return _buildSplash();
+  }
+
+  _buildSplash() {
+    return Stack(
+      alignment: AlignmentDirectional.topCenter,
+      children: [
+        AspectRatio(
+          aspectRatio: 1080 / 1938,
+          child: SizedBox(width: 1.sw, child: Assets.images.bgSplash.image()),
+        ),
+        Container(
+            margin: EdgeInsets.only(top: 222.h),
+            width: 221.w,
+            child: Assets.images.iconSplashTitle.image()),
+        Align(
+          alignment: Alignment.bottomCenter,
+          child: Container(
+              margin: EdgeInsets.only(bottom: 33.h),
+              width: 102.w,
+              child: Assets.images.iconSplashLogo.image()),
+        )
+      ],
+    );
+  }
+
+  @override
+  bool immersive() {
+    return true;
   }
 }

+ 1 - 0
lib/module/talk/common_view.dart

@@ -91,6 +91,7 @@ Widget getTodoItemView(AgendaListAllBean agenda, TodoItemBuilder builder) {
             ),
           ),
           child: ExpansionTile(
+            initiallyExpanded: true,
             onExpansionChanged: (value) {
               agenda.isExpanded.value = value;
             },