fix: 修复assets在example app中不能使用的问题 & 加入maven local的链接,修复flutter无法打包 aar的问题
This commit is contained in:
@@ -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"))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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<Delete>("clean") {
|
||||
delete(rootProject.layout.buildDirectory)
|
||||
}
|
||||
@@ -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")
|
||||
@@ -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") }
|
||||
|
||||
@@ -28,7 +28,7 @@ class _MainScreenState extends State<MainScreen> {
|
||||
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,
|
||||
),
|
||||
),
|
||||
|
||||
@@ -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<PartScreen> {
|
||||
icon: Image.asset(
|
||||
'assets/images/open_in_full.png',
|
||||
width: 24,
|
||||
height: 24
|
||||
height: 24,
|
||||
package: 'ai_chat_assistant',
|
||||
),
|
||||
onPressed: _openFullScreen,
|
||||
padding: EdgeInsets.zero,
|
||||
|
||||
31
lib/utils/assets_util.dart
Normal file
31
lib/utils/assets_util.dart
Normal file
@@ -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,
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -18,6 +18,7 @@ class AssistantAvatar extends StatelessWidget {
|
||||
child: Image.asset(
|
||||
'assets/images/avatar.png',
|
||||
fit: BoxFit.contain,
|
||||
package: 'ai_chat_assistant',
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ class _ChatBubbleState extends State<ChatBubble> {
|
||||
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<ChatBubble> {
|
||||
},
|
||||
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<ChatBubble> {
|
||||
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<ChatBubble> {
|
||||
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)),
|
||||
),
|
||||
],
|
||||
|
||||
@@ -49,7 +49,7 @@ class _ChatFooterState extends State<ChatFooter>
|
||||
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<ChatFooter>
|
||||
child: GestureDetector(
|
||||
onTap: () {},
|
||||
child: Image.asset(
|
||||
'assets/images/keyboard_mini.png',
|
||||
'assets/images/keyboard_mini.png',package: 'ai_chat_assistant',
|
||||
width: 24,
|
||||
height: 24,
|
||||
),
|
||||
|
||||
@@ -140,7 +140,7 @@ class _FloatingIconState extends State<FloatingIcon>
|
||||
Intl.getCurrentLocale().startsWith('zh')
|
||||
? _iconImages[_imageIndex]:_iconImagesEn[_imageIndex],
|
||||
width: iconSize,
|
||||
height: iconSize,
|
||||
height: iconSize,package: 'ai_chat_assistant',
|
||||
),
|
||||
);
|
||||
},
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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<RotatingImage>
|
||||
child: Image.asset(
|
||||
widget.imagePath,
|
||||
width: widget.size,
|
||||
height: widget.size
|
||||
height: widget.size,
|
||||
package: widget.package, // 使用传入的package参数
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user