diff --git a/assets/images/1_smile.svg b/assets/images/1_smile.svg
new file mode 100644
index 0000000..516df22
--- /dev/null
+++ b/assets/images/1_smile.svg
@@ -0,0 +1,4 @@
+
+
\ No newline at end of file
diff --git a/assets/images/2_angry.svg b/assets/images/2_angry.svg
new file mode 100644
index 0000000..9b9dc9d
--- /dev/null
+++ b/assets/images/2_angry.svg
@@ -0,0 +1,4 @@
+
+
\ No newline at end of file
diff --git a/assets/images/3_funny.svg b/assets/images/3_funny.svg
new file mode 100644
index 0000000..11c51c9
--- /dev/null
+++ b/assets/images/3_funny.svg
@@ -0,0 +1,4 @@
+
+
\ No newline at end of file
diff --git a/assets/voice/voice_1.mp3 b/assets/voice/voice_1.mp3
deleted file mode 100644
index f4426c1..0000000
Binary files a/assets/voice/voice_1.mp3 and /dev/null differ
diff --git a/assets/voice/voice_1.wav b/assets/voice/voice_1.wav
new file mode 100644
index 0000000..20deeed
Binary files /dev/null and b/assets/voice/voice_1.wav differ
diff --git a/assets/voice/voice_2.mp3 b/assets/voice/voice_2.mp3
deleted file mode 100644
index db16fa7..0000000
Binary files a/assets/voice/voice_2.mp3 and /dev/null differ
diff --git a/assets/voice/voice_2.wav b/assets/voice/voice_2.wav
new file mode 100644
index 0000000..6a4ea0e
Binary files /dev/null and b/assets/voice/voice_2.wav differ
diff --git a/assets/voice/voice_3.mp3 b/assets/voice/voice_3.mp3
deleted file mode 100644
index 4641ed5..0000000
Binary files a/assets/voice/voice_3.mp3 and /dev/null differ
diff --git a/assets/voice/voice_3.wav b/assets/voice/voice_3.wav
new file mode 100644
index 0000000..a1886f7
Binary files /dev/null and b/assets/voice/voice_3.wav differ
diff --git a/assets/voice/voice_4.mp3 b/assets/voice/voice_4.mp3
deleted file mode 100644
index e75e4d7..0000000
Binary files a/assets/voice/voice_4.mp3 and /dev/null differ
diff --git a/lib/feature/voiceOutput/widget/VoiceOutputButton.dart b/lib/feature/voiceOutput/widget/VoiceOutputButton.dart
index 4710d3f..bca7428 100644
--- a/lib/feature/voiceOutput/widget/VoiceOutputButton.dart
+++ b/lib/feature/voiceOutput/widget/VoiceOutputButton.dart
@@ -1,8 +1,11 @@
+import 'package:audioplayers/audioplayers.dart';
import 'package:blueberry_flutter_template/feature/voiceOutput/provider/CategoryIondexProvider.dart';
import 'package:blueberry_flutter_template/utils/AppColors.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
+final player = AudioPlayer();
+
class VoiceOutputButton extends ConsumerWidget {
const VoiceOutputButton({super.key});
@@ -14,7 +17,7 @@ class VoiceOutputButton extends ConsumerWidget {
radius: 50,
child: IconButton(
onPressed: () {
- print('음성 출력: ${categoryIndex}');
+ player.play(AssetSource('voice/voice_${categoryIndex + 1}.wav'));
},
icon: const Icon(Icons.volume_up),
color: Colors.white,
diff --git a/lib/feature/voiceOutput/widget/VoiceOutputCategoryListView.dart b/lib/feature/voiceOutput/widget/VoiceOutputCategoryListView.dart
index 693066b..efb6e7c 100644
--- a/lib/feature/voiceOutput/widget/VoiceOutputCategoryListView.dart
+++ b/lib/feature/voiceOutput/widget/VoiceOutputCategoryListView.dart
@@ -1,7 +1,10 @@
import 'package:blueberry_flutter_template/feature/voiceOutput/provider/CategoryIondexProvider.dart';
+import 'package:blueberry_flutter_template/gen/assets.gen.dart';
+import 'package:blueberry_flutter_template/utils/AppColors.dart';
import 'package:flutter/material.dart';
import 'package:carousel_slider/carousel_slider.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
+import 'package:flutter_svg/flutter_svg.dart';
class VoiceOutputCategoryListView extends ConsumerWidget {
const VoiceOutputCategoryListView({super.key});
@@ -9,7 +12,8 @@ class VoiceOutputCategoryListView extends ConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
// 카테고리 데이터를 리스트로 정의
- final categories = ['화내는 남편', '놀러온 남자', '데이트 준비중', '조직폭력배 남자'];
+ final categories = ['마중 나온 남자', '약간 다투는 남자', '혼자 이야기 하는 남자'];
+ final svgImages = [Assets.images.a1Smile, Assets.images.a2Angry, Assets.images.a3Funny];
return CarouselSlider(
options: CarouselOptions(
@@ -31,14 +35,11 @@ class VoiceOutputCategoryListView extends ConsumerWidget {
flex: 2, // 여유 공간의 2/3 사용
child: CircleAvatar(
radius: 80, // 원의 크기 조정
- backgroundColor: Colors.blue, // 원의 배경색
- child: Text(
- category[0], // 카테고리 이름의 첫 글자
- style: const TextStyle(
- color: Colors.white, // 텍스트 색상
- fontSize: 40, // 텍스트 크기
- fontWeight: FontWeight.bold, // 텍스트 두께
- ),
+ backgroundColor: primaryColor, // 원의 배경색
+ child: SvgPicture.asset(
+ svgImages[categories.indexOf(category)], // SVG 이미지 표시
+ width: 100, // SVG 이미지 너비
+ height: 100, // SVG 이미지 높이
),
),
),
diff --git a/lib/feature/voiceOutput/widget/VoiceOutputDescriptionTextBox.dart b/lib/feature/voiceOutput/widget/VoiceOutputDescriptionTextBox.dart
index cf14af4..58f4b02 100644
--- a/lib/feature/voiceOutput/widget/VoiceOutputDescriptionTextBox.dart
+++ b/lib/feature/voiceOutput/widget/VoiceOutputDescriptionTextBox.dart
@@ -12,12 +12,7 @@ class VoiceOutputDescriptionTextBox extends ConsumerWidget {
Widget build(BuildContext context, WidgetRef ref) {
final categoryIndex = ref.watch(categoryIndexProvider);
- final descriptionList = [
- '너는 항상 왜 그러는 거야?',
- '늦었네..?',
- '오늘도 수고 많았어~',
- '뭐? 어떤 놈인데?',
- ];
+ final descriptionList = ['잘 갔다 왔어? 오늘 좀 늦었네?', '왔어? 우리 이야기 좀 하자', '아~ 진짜 드디어 왔네..'];
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 20),
diff --git a/lib/gen/assets.gen.dart b/lib/gen/assets.gen.dart
index d678a71..cb4e3c1 100644
--- a/lib/gen/assets.gen.dart
+++ b/lib/gen/assets.gen.dart
@@ -98,6 +98,15 @@ class $AssetsIconGen {
class $AssetsImagesGen {
const $AssetsImagesGen();
+ /// File path: assets/images/1_smile.svg
+ String get a1Smile => 'assets/images/1_smile.svg';
+
+ /// File path: assets/images/2_angry.svg
+ String get a2Angry => 'assets/images/2_angry.svg';
+
+ /// File path: assets/images/3_funny.svg
+ String get a3Funny => 'assets/images/3_funny.svg';
+
/// File path: assets/images/phone.svg
String get phone => 'assets/images/phone.svg';
@@ -111,7 +120,8 @@ class $AssetsImagesGen {
String get smile => 'assets/images/smile.svg';
/// List of all assets
- List get values => [phone, safehouse, sample, smile];
+ List get values =>
+ [a1Smile, a2Angry, a3Funny, phone, safehouse, sample, smile];
}
class $AssetsLauncherIconGen {
@@ -191,20 +201,17 @@ class $AssetsLottieGen {
class $AssetsVoiceGen {
const $AssetsVoiceGen();
- /// File path: assets/voice/voice_1.mp3
- String get voice1 => 'assets/voice/voice_1.mp3';
-
- /// File path: assets/voice/voice_2.mp3
- String get voice2 => 'assets/voice/voice_2.mp3';
+ /// File path: assets/voice/voice_1.wav
+ String get voice1 => 'assets/voice/voice_1.wav';
- /// File path: assets/voice/voice_3.mp3
- String get voice3 => 'assets/voice/voice_3.mp3';
+ /// File path: assets/voice/voice_2.wav
+ String get voice2 => 'assets/voice/voice_2.wav';
- /// File path: assets/voice/voice_4.mp3
- String get voice4 => 'assets/voice/voice_4.mp3';
+ /// File path: assets/voice/voice_3.wav
+ String get voice3 => 'assets/voice/voice_3.wav';
/// List of all assets
- List get values => [voice1, voice2, voice3, voice4];
+ List get values => [voice1, voice2, voice3];
}
class Assets {