diff --git a/android/build.gradle b/android/build.gradle index 0715030..8f52ca7 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -4,8 +4,8 @@ version '1.0-SNAPSHOT' buildscript { ext.kotlin_version = '2.1.20' repositories { - maven { url rootProject.file("../ai_chat_assistant/android/mavenLocal") } - + maven { url file("mavenLocal") } + google() mavenCentral() } @@ -18,7 +18,7 @@ buildscript { allprojects { repositories { - maven { url rootProject.file("../ai_chat_assistant/android/mavenLocal") } + maven { url file("mavenLocal") } google() mavenCentral() @@ -83,11 +83,11 @@ android { } dependencies { -// implementation 'com.alibaba.idst:nui-release:1.0.0' -// implementation 'com.alibaba:fastjson:1.2.83' + implementation 'com.alibaba.idst:nui-release:1.0.0' + implementation 'com.alibaba:fastjson:1.2.83' // compileOnly files("$flutterRoot/bin/cache/artifacts/engine/android-arm/flutter.jar") - implementation(files("libs/fastjson-1.1.46.android.jar")) - implementation(files("libs/nui-release-1.0.0.aar")) +// implementation(files("libs/fastjson-1.1.46.android.jar")) +// implementation(files("libs/nui-release-1.0.0.aar")) } } diff --git a/android/build.gradle.kts b/android/build.gradle.kts deleted file mode 100644 index 0a2b9d0..0000000 --- a/android/build.gradle.kts +++ /dev/null @@ -1,26 +0,0 @@ -allprojects { - repositories { - google() - mavenCentral() - maven { url = uri("https://maven.aliyun.com/repository/public/") } - maven { url = uri("https://maven.aliyun.com/repository/google/") } - maven { url = uri("https://maven.aliyun.com/repository/gradle-plugin/") } - maven { url = uri("https://storage.googleapis.com/download.flutter.io")} - - } -} - -val newBuildDir: Directory = rootProject.layout.buildDirectory.dir("../../build").get() -rootProject.layout.buildDirectory.value(newBuildDir) - -subprojects { - val newSubprojectBuildDir: Directory = newBuildDir.dir(project.name) - project.layout.buildDirectory.value(newSubprojectBuildDir) -} -subprojects { - project.evaluationDependsOn(":app") -} - -tasks.register("clean") { - delete(rootProject.layout.buildDirectory) -} diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts deleted file mode 100644 index ab39a10..0000000 --- a/android/settings.gradle.kts +++ /dev/null @@ -1,25 +0,0 @@ -pluginManagement { - val flutterSdkPath = run { - val properties = java.util.Properties() - file("local.properties").inputStream().use { properties.load(it) } - val flutterSdkPath = properties.getProperty("flutter.sdk") - require(flutterSdkPath != null) { "flutter.sdk not set in local.properties" } - flutterSdkPath - } - - includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") - - repositories { - google() - mavenCentral() - gradlePluginPortal() - } -} - -plugins { - id("dev.flutter.flutter-plugin-loader") version "1.0.0" - id("com.android.application") version "8.7.3" apply false - id("org.jetbrains.kotlin.android") version "2.1.0" apply false -} - -include(":app") diff --git a/example/android/build.gradle.kts b/example/android/build.gradle.kts index cec5e06..4a3c37d 100644 --- a/example/android/build.gradle.kts +++ b/example/android/build.gradle.kts @@ -1,5 +1,11 @@ allprojects { repositories { + val mavenLocalPath = rootProject.file("../../android/mavenLocal") + println("Maven local path: ${mavenLocalPath.absolutePath}") + println("Maven local exists: ${mavenLocalPath.exists()}") + + maven { url = uri(mavenLocalPath) } + maven { url = uri("https://maven.aliyun.com/repository/public") } maven { url = uri("https://maven.aliyun.com/repository/google") } maven { url = uri("https://maven.aliyun.com/repository/gradle-plugin") } diff --git a/lib/screens/main_screen.dart b/lib/screens/main_screen.dart index 9d736ed..80e2425 100644 --- a/lib/screens/main_screen.dart +++ b/lib/screens/main_screen.dart @@ -28,7 +28,7 @@ class _MainScreenState extends State { Container( decoration: const BoxDecoration( image: DecorationImage( - image: AssetImage('assets/images/bg.jpg'), + image: AssetImage('assets/images/bg.jpg', package: 'ai_chat_assistant'), fit: BoxFit.cover, ), ), diff --git a/lib/screens/part_screen.dart b/lib/screens/part_screen.dart index 981e7cd..de4051b 100644 --- a/lib/screens/part_screen.dart +++ b/lib/screens/part_screen.dart @@ -1,3 +1,4 @@ +import 'package:ai_chat_assistant/utils/assets_util.dart'; import 'package:flutter/material.dart'; import 'dart:ui'; import '../widgets/chat_box.dart'; @@ -146,7 +147,8 @@ class _PartScreenState extends State { icon: Image.asset( 'assets/images/open_in_full.png', width: 24, - height: 24 + height: 24, + package: 'ai_chat_assistant', ), onPressed: _openFullScreen, padding: EdgeInsets.zero, diff --git a/lib/utils/assets_util.dart b/lib/utils/assets_util.dart new file mode 100644 index 0000000..8cdaebd --- /dev/null +++ b/lib/utils/assets_util.dart @@ -0,0 +1,31 @@ +// assets_util.dart +import 'package:flutter/widgets.dart'; +import 'package:flutter/foundation.dart'; + +/** + * AssetsUtil + * @description: 资源工具类 + * @author guangfei.zhao + */ +class AssetsUtil { + + static const String packageName = 'ai_chat_assistant'; + + static AssetImage getImage(String imageName) { + return AssetImage( + 'assets/images/$imageName', + package: packageName, + ); + } + + static Widget getImageWidget(String imageName, {BoxFit? fit, double? width, double? height}) { + return Image.asset( + 'assets/images/$imageName', + package: packageName, + fit: fit, + width: width, + height: height, + ); + } + +} \ No newline at end of file diff --git a/lib/widgets/assistant_avatar.dart b/lib/widgets/assistant_avatar.dart index fa97dcd..8b90ee1 100644 --- a/lib/widgets/assistant_avatar.dart +++ b/lib/widgets/assistant_avatar.dart @@ -18,6 +18,7 @@ class AssistantAvatar extends StatelessWidget { child: Image.asset( 'assets/images/avatar.png', fit: BoxFit.contain, + package: 'ai_chat_assistant', ), ); } diff --git a/lib/widgets/chat_bubble.dart b/lib/widgets/chat_bubble.dart index e9b8971..95addd9 100644 --- a/lib/widgets/chat_bubble.dart +++ b/lib/widgets/chat_bubble.dart @@ -123,7 +123,7 @@ class _ChatBubbleState extends State { break; case MessageStatus.completed: case MessageStatus.success: - icon = Image.asset('assets/images/checked.png', width: 20, height: 20); + icon = Image.asset('assets/images/checked.png', width: 20, height: 20, package: 'ai_chat_assistant',); color = Colors.white; break; case MessageStatus.failure: @@ -301,7 +301,7 @@ class _ChatBubbleState extends State { }, child: Padding( padding: const EdgeInsets.only(left: 12), - child: Image.asset('assets/images/copy.png', + child: Image.asset('assets/images/copy.png',package: 'ai_chat_assistant', width: 22, height: 22), ), ), @@ -315,9 +315,9 @@ class _ChatBubbleState extends State { child: Padding( padding: const EdgeInsets.only(left: 12), child: _liked - ? Image.asset('assets/images/liked2.png', + ? Image.asset('assets/images/liked2.png',package: 'ai_chat_assistant', width: 22, height: 22) - : Image.asset('assets/images/liked1.png', + : Image.asset('assets/images/liked1.png',package: 'ai_chat_assistant', width: 22, height: 22), ), ), @@ -331,9 +331,9 @@ class _ChatBubbleState extends State { child: Padding( padding: const EdgeInsets.only(left: 12), child: _disliked - ? Image.asset('assets/images/disliked2.png', + ? Image.asset('assets/images/disliked2.png',package: 'ai_chat_assistant', width: 22, height: 22) - : Image.asset('assets/images/disliked1.png', + : Image.asset('assets/images/disliked1.png',package: 'ai_chat_assistant', width: 22, height: 22)), ), ], diff --git a/lib/widgets/chat_footer.dart b/lib/widgets/chat_footer.dart index 3d11b56..59df9f8 100644 --- a/lib/widgets/chat_footer.dart +++ b/lib/widgets/chat_footer.dart @@ -49,7 +49,7 @@ class _ChatFooterState extends State child: GestureDetector( onTap: widget.onClear, child: Image.asset( - 'assets/images/delete.png', + 'assets/images/delete.png',package: 'ai_chat_assistant', width: 24, height: 24, ), @@ -137,7 +137,7 @@ class _ChatFooterState extends State child: GestureDetector( onTap: () {}, child: Image.asset( - 'assets/images/keyboard_mini.png', + 'assets/images/keyboard_mini.png',package: 'ai_chat_assistant', width: 24, height: 24, ), diff --git a/lib/widgets/floating_icon.dart b/lib/widgets/floating_icon.dart index ce774cc..2ad7b8e 100644 --- a/lib/widgets/floating_icon.dart +++ b/lib/widgets/floating_icon.dart @@ -140,7 +140,7 @@ class _FloatingIconState extends State Intl.getCurrentLocale().startsWith('zh') ? _iconImages[_imageIndex]:_iconImagesEn[_imageIndex], width: iconSize, - height: iconSize, + height: iconSize,package: 'ai_chat_assistant', ), ); }, diff --git a/lib/widgets/floating_icon_with_wave.dart b/lib/widgets/floating_icon_with_wave.dart index d104567..f4764a4 100644 --- a/lib/widgets/floating_icon_with_wave.dart +++ b/lib/widgets/floating_icon_with_wave.dart @@ -1,3 +1,4 @@ +import 'package:ai_chat_assistant/utils/assets_util.dart'; import 'package:flutter/material.dart'; import 'mini_audio_wave.dart'; @@ -36,6 +37,7 @@ class FloatingIconWithWave extends StatelessWidget { width: iconSize, height: iconSize, fit: BoxFit.contain, + package: AssetsUtil.packageName ), // 声波动画,距离底部13px的位置 Positioned( diff --git a/lib/widgets/rotating_image.dart b/lib/widgets/rotating_image.dart index 6ce1ec6..f383e2f 100644 --- a/lib/widgets/rotating_image.dart +++ b/lib/widgets/rotating_image.dart @@ -5,11 +5,14 @@ class RotatingImage extends StatefulWidget { final double size; final Duration duration; + final String? package; // 添加这个参数 + const RotatingImage({ Key? key, required this.imagePath, this.size = 20, - this.duration = const Duration(seconds: 3) + this.duration = const Duration(seconds: 3), + this.package = 'ai_chat_assistant', // 默认值 }) : super(key: key); @override @@ -42,7 +45,8 @@ class _RotatingImageState extends State child: Image.asset( widget.imagePath, width: widget.size, - height: widget.size + height: widget.size, + package: widget.package, // 使用传入的package参数 ), ); }