Browse Source

[New]聊天列表新增等待响应动效

zhipeng 1 year ago
parent
commit
b4397fd1fb

BIN
assets/anim/anim_chat_response_loading.zip


BIN
assets/images/icon_stream_chat_progressing.webp


+ 3 - 16
lib/module/chat/view.dart

@@ -8,6 +8,7 @@ import 'package:flutter/material.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter/services.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
 import 'package:get/get.dart';
+import 'package:lottie/lottie.dart';
 import 'package:pull_to_refresh/pull_to_refresh.dart';
 import 'package:pull_to_refresh/pull_to_refresh.dart';
 
 
 import '../../data/bean/progressing_chat_item.dart';
 import '../../data/bean/progressing_chat_item.dart';
@@ -238,22 +239,8 @@ class ChatPage extends BasePage<ChatController> {
               bottomRight: Radius.circular(20.w),
               bottomRight: Radius.circular(20.w),
               bottomLeft: Radius.circular(20.w))),
               bottomLeft: Radius.circular(20.w))),
       child: isStreamStarted != null && isStreamStarted == false
       child: isStreamStarted != null && isStreamStarted == false
-          ? Row(
-              children: [
-                Image(
-                    image: Assets.images.iconStreamChatProgressing.provider(),
-                    width: 24.w,
-                    height: 20.w),
-                Padding(
-                  padding: EdgeInsets.only(left: 8.w, right: 8.w),
-                  child: Text(
-                    "正在生成中,请稍后...",
-                    style: TextStyle(
-                        fontSize: 14.w, color: ColorName.tertiaryTextColor),
-                  ),
-                ),
-              ],
-            )
+          ? Lottie.asset("assets/anim/anim_chat_response_loading.zip",
+              width: 46.w, height: 20.w)
           : SelectableText(content,
           : SelectableText(content,
               style:
               style:
                   TextStyle(fontSize: 14.w, color: ColorName.primaryTextColor)),
                   TextStyle(fontSize: 14.w, color: ColorName.primaryTextColor)),

+ 8 - 0
lib/module/record/controller.dart

@@ -0,0 +1,8 @@
+import 'package:electronic_assistant/base/base_controller.dart';
+
+class RecordController extends BaseController {
+  @override
+  void onInit() {
+    super.onInit();
+  }
+}

+ 12 - 0
lib/module/record/view.dart

@@ -0,0 +1,12 @@
+import 'package:electronic_assistant/base/base_page.dart';
+import 'package:electronic_assistant/module/record/controller.dart';
+import 'package:flutter/material.dart';
+
+class RecordPage extends BasePage<RecordController> {
+  const RecordPage({super.key});
+
+  @override
+  Widget buildBody(BuildContext context) {
+    throw UnimplementedError();
+  }
+}

+ 6 - 0
lib/router/app_pages.dart

@@ -1,4 +1,5 @@
 import 'package:electronic_assistant/module/main/controller.dart';
 import 'package:electronic_assistant/module/main/controller.dart';
+import 'package:electronic_assistant/module/record/controller.dart';
 import 'package:electronic_assistant/module/task/search/task_search.dart';
 import 'package:electronic_assistant/module/task/search/task_search.dart';
 import 'package:electronic_assistant/module/task/view.dart';
 import 'package:electronic_assistant/module/task/view.dart';
 import 'package:get/get.dart';
 import 'package:get/get.dart';
@@ -11,6 +12,7 @@ import '../module/home/controller.dart';
 import '../module/login/controller.dart';
 import '../module/login/controller.dart';
 import '../module/login/view.dart';
 import '../module/login/view.dart';
 import '../module/main/view.dart';
 import '../module/main/view.dart';
+import '../module/record/view.dart';
 import '../module/splash/view.dart';
 import '../module/splash/view.dart';
 import '../module/task/controller.dart';
 import '../module/task/controller.dart';
 
 
@@ -36,6 +38,8 @@ abstract class RoutePath {
   static const taskSearch = '/taskSearch';
   static const taskSearch = '/taskSearch';
 
 
   static const chat = '/chat';
   static const chat = '/chat';
+
+  static const record = '/record';
 }
 }
 
 
 class AppBinding extends Bindings {
 class AppBinding extends Bindings {
@@ -46,6 +50,7 @@ class AppBinding extends Bindings {
     lazyPut(() => LoginController());
     lazyPut(() => LoginController());
     lazyPut(() => TaskController());
     lazyPut(() => TaskController());
     lazyPut(() => ChatController());
     lazyPut(() => ChatController());
+    lazyPut(() => RecordController());
   }
   }
 
 
   void lazyPut<S>(InstanceBuilderCallback<S> builder) {
   void lazyPut<S>(InstanceBuilderCallback<S> builder) {
@@ -62,4 +67,5 @@ final generalPages = [
   GetPage(name: RoutePath.chat, page: () => const ChatPage()),
   GetPage(name: RoutePath.chat, page: () => const ChatPage()),
   GetPage(name: RoutePath.task, page: () => const TaskPage()),
   GetPage(name: RoutePath.task, page: () => const TaskPage()),
   GetPage(name: RoutePath.taskSearch, page: () => const TaskSearchPage()),
   GetPage(name: RoutePath.taskSearch, page: () => const TaskSearchPage()),
+  GetPage(name: RoutePath.record, page: () => const RecordPage()),
 ];
 ];

+ 18 - 2
pubspec.lock

@@ -306,10 +306,10 @@ packages:
     dependency: "direct main"
     dependency: "direct main"
     description:
     description:
       name: flutter_smart_dialog
       name: flutter_smart_dialog
-      sha256: "3d376ba47f64391cc657f706815b32dd6ff2e0f80553a5c9f33b812ba7c59462"
+      sha256: "6b5fd32cd2900745df30c1d95ef597ea0ee1ee8cfa557eab62010e3db1d3d717"
       url: "https://pub.dev"
       url: "https://pub.dev"
     source: hosted
     source: hosted
-    version: "4.9.8"
+    version: "4.9.8+1"
   flutter_test:
   flutter_test:
     dependency: "direct dev"
     dependency: "direct dev"
     description: flutter
     description: flutter
@@ -355,6 +355,14 @@ packages:
       url: "https://pub.dev"
       url: "https://pub.dev"
     source: hosted
     source: hosted
     version: "2.0.0"
     version: "2.0.0"
+  http:
+    dependency: transitive
+    description:
+      name: http
+      sha256: b9c29a161230ee03d3ccf545097fccd9b87a5264228c5d348202e0f0c28f9010
+      url: "https://pub.dev"
+    source: hosted
+    version: "1.2.2"
   http_multi_server:
   http_multi_server:
     dependency: transitive
     dependency: transitive
     description:
     description:
@@ -459,6 +467,14 @@ packages:
       url: "https://pub.dev"
       url: "https://pub.dev"
     source: hosted
     source: hosted
     version: "1.2.0"
     version: "1.2.0"
+  lottie:
+    dependency: "direct main"
+    description:
+      name: lottie
+      sha256: "6a24ade5d3d918c306bb1c21a6b9a04aab0489d51a2582522eea820b4093b62b"
+      url: "https://pub.dev"
+    source: hosted
+    version: "3.1.2"
   matcher:
   matcher:
     dependency: transitive
     dependency: transitive
     description:
     description:

+ 3 - 0
pubspec.yaml

@@ -57,6 +57,8 @@ dependencies:
   #上、下拉刷新
   #上、下拉刷新
   pull_to_refresh: ^2.0.0
   pull_to_refresh: ^2.0.0
 
 
+  #lottie
+  lottie: ^3.1.2
 
 
 dev_dependencies:
 dev_dependencies:
   flutter_test:
   flutter_test:
@@ -101,6 +103,7 @@ flutter:
 
 
   assets:
   assets:
     - assets/images/
     - assets/images/
+    - assets/anim/
 
 
   # An image asset can refer to one or more resolution-specific "variants", see
   # An image asset can refer to one or more resolution-specific "variants", see
   # https://flutter.dev/assets-and-images/#resolution-aware
   # https://flutter.dev/assets-and-images/#resolution-aware