거의 최종본

This commit is contained in:
girinb
2025-09-14 00:34:18 +09:00
parent 82b536be4b
commit bf06420d91
42 changed files with 202 additions and 81 deletions

View File

@@ -1,8 +1,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <manifest xmlns:android="http://schemas.android.com/apk/res/android">
<application <application
android:label="poet" android:label="시인의 서재"
android:name="${applicationName}" android:name="${applicationName}"
android:icon="@mipmap/ic_launcher"> android:icon="@mipmap/launcher_icon">
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true" android:exported="true"

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
assets/audio/1.mp3 Normal file

Binary file not shown.

BIN
assets/audio/2.mp3 Normal file

Binary file not shown.

BIN
assets/audio/3.mp3 Normal file

Binary file not shown.

BIN
assets/audio/4.mp3 Normal file

Binary file not shown.

BIN
assets/audio/5.mp3 Normal file

Binary file not shown.

BIN
assets/audio/6.mp3 Normal file

Binary file not shown.

BIN
assets/audio/7.mp3 Normal file

Binary file not shown.

BIN
assets/audio/8.mp3 Normal file

Binary file not shown.

BIN
assets/audio/9.mp3 Normal file

Binary file not shown.

BIN
assets/images/title.webp Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@@ -427,7 +427,7 @@
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO; ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon;
CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++"; CLANG_CXX_LIBRARY = "libc++";
@@ -484,7 +484,7 @@
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO; ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = AppIcon;
CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NONNULL = YES;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++"; CLANG_CXX_LIBRARY = "libc++";

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 295 B

After

Width:  |  Height:  |  Size: 602 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 406 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 450 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 282 B

After

Width:  |  Height:  |  Size: 844 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 462 B

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 704 B

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 406 B

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 586 B

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 862 B

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 862 B

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 762 B

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -5,7 +5,7 @@
<key>CFBundleDevelopmentRegion</key> <key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string> <string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key> <key>CFBundleDisplayName</key>
<string>Poet</string> <string>시인의 서재</string>
<key>CFBundleExecutable</key> <key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string> <string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key> <key>CFBundleIdentifier</key>
@@ -13,7 +13,7 @@
<key>CFBundleInfoDictionaryVersion</key> <key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string> <string>6.0</string>
<key>CFBundleName</key> <key>CFBundleName</key>
<string>poet</string> <string>시인의 서재</string>
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>

View File

@@ -2,9 +2,15 @@
class Assets { class Assets {
Assets._(); Assets._();
static const String audio001 = 'assets/audio/001.wav'; static const String audio1 = 'assets/audio/1.mp3';
static const String audio002 = 'assets/audio/002.wav'; static const String audio2 = 'assets/audio/2.mp3';
static const String audio003 = 'assets/audio/003.wav'; static const String audio3 = 'assets/audio/3.mp3';
static const String audio4 = 'assets/audio/4.mp3';
static const String audio5 = 'assets/audio/5.mp3';
static const String audio6 = 'assets/audio/6.mp3';
static const String audio7 = 'assets/audio/7.mp3';
static const String audio8 = 'assets/audio/8.mp3';
static const String audio9 = 'assets/audio/9.mp3';
static const String goSubsetsButton01 = 'assets/images/go_subsets/Button_01.webp'; static const String goSubsetsButton01 = 'assets/images/go_subsets/Button_01.webp';
static const String goSubsetsButton02 = 'assets/images/go_subsets/Button_02.webp'; static const String goSubsetsButton02 = 'assets/images/go_subsets/Button_02.webp';
static const String goSubsetsButton03 = 'assets/images/go_subsets/Button_03.webp'; static const String goSubsetsButton03 = 'assets/images/go_subsets/Button_03.webp';
@@ -15,6 +21,7 @@ class Assets {
static const String goSubsetsButton08 = 'assets/images/go_subsets/Button_08.webp'; static const String goSubsetsButton08 = 'assets/images/go_subsets/Button_08.webp';
static const String goSubsetsButton09 = 'assets/images/go_subsets/Button_09.webp'; static const String goSubsetsButton09 = 'assets/images/go_subsets/Button_09.webp';
static const String imagesMainBack = 'assets/images/Main_Back.webp'; static const String imagesMainBack = 'assets/images/Main_Back.webp';
static const String imagesTitle = 'assets/images/title.webp';
static const String subsetsSub01 = 'assets/images/subsets/Sub_01.webp'; static const String subsetsSub01 = 'assets/images/subsets/Sub_01.webp';
static const String subsetsSub02 = 'assets/images/subsets/Sub_02.webp'; static const String subsetsSub02 = 'assets/images/subsets/Sub_02.webp';
static const String subsetsSub03 = 'assets/images/subsets/Sub_03.webp'; static const String subsetsSub03 = 'assets/images/subsets/Sub_03.webp';
@@ -27,6 +34,7 @@ class Assets {
static const String uiUI5minus = 'assets/images/ui/UI_5minus.webp'; static const String uiUI5minus = 'assets/images/ui/UI_5minus.webp';
static const String uiUI5plus = 'assets/images/ui/UI_5plus.webp'; static const String uiUI5plus = 'assets/images/ui/UI_5plus.webp';
static const String uiUIBack = 'assets/images/ui/UI_Back.webp'; static const String uiUIBack = 'assets/images/ui/UI_Back.webp';
static const String uiUIPause = 'assets/images/ui/UI_Pause.webp';
static const String uiUIPlay = 'assets/images/ui/UI_Play.webp'; static const String uiUIPlay = 'assets/images/ui/UI_Play.webp';
static const String uiUIReplay = 'assets/images/ui/UI_Replay.webp'; static const String uiUIReplay = 'assets/images/ui/UI_Replay.webp';

View File

@@ -1,8 +1,7 @@
import 'dart:io'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:poet/poet_screen.dart'; import 'package:poet_repository/poet_screen.dart';
void main() { void main() {
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
@@ -28,6 +27,10 @@ class PoetStudyScreen extends StatefulWidget {
class _PoetStudyScreenState extends State<PoetStudyScreen> class _PoetStudyScreenState extends State<PoetStudyScreen>
with WidgetsBindingObserver { with WidgetsBindingObserver {
// Variables to control grid spacing
final double _crossAxisSpacing = 1.0;
final double _mainAxisSpacing = 1.0;
@override @override
void initState() { void initState() {
super.initState(); super.initState();
@@ -36,7 +39,7 @@ class _PoetStudyScreenState extends State<PoetStudyScreen>
} }
void _setSystemUIOverlayStyle() { void _setSystemUIOverlayStyle() {
if (Platform.isAndroid) { if (defaultTargetPlatform == TargetPlatform.android) {
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky); SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
} }
} }
@@ -45,7 +48,9 @@ class _PoetStudyScreenState extends State<PoetStudyScreen>
void dispose() { void dispose() {
WidgetsBinding.instance.removeObserver(this); WidgetsBinding.instance.removeObserver(this);
// When the main screen is disposed, restore the system UI // When the main screen is disposed, restore the system UI
SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge); if (defaultTargetPlatform == TargetPlatform.android) {
SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
}
super.dispose(); super.dispose();
} }
@@ -70,19 +75,21 @@ class _PoetStudyScreenState extends State<PoetStudyScreen>
), ),
// Main content // Main content
SafeArea( Transform.translate(
child: Padding( offset: Offset(0.0, -40.0), // Move up by 40 pixels
padding: const EdgeInsets.all(20.0), child: Center(
child: Column( child: Padding(
children: [ padding: const EdgeInsets.all(150.0),
Expanded( child: Column(
child: Center( mainAxisSize: MainAxisSize.min, // Use minimum space
children: [
Center(
child: GridView.builder( child: GridView.builder(
gridDelegate: gridDelegate:
const SliverGridDelegateWithFixedCrossAxisCount( SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 3, crossAxisCount: 3,
crossAxisSpacing: 15, crossAxisSpacing: _crossAxisSpacing,
mainAxisSpacing: 15, mainAxisSpacing: _mainAxisSpacing,
), ),
itemCount: 9, itemCount: 9,
shrinkWrap: true, shrinkWrap: true,
@@ -92,8 +99,20 @@ class _PoetStudyScreenState extends State<PoetStudyScreen>
}, },
), ),
), ),
), SizedBox(height: 30), // Added space
], Align(
alignment: Alignment.centerLeft,
child: Padding(
padding: const EdgeInsets.only(left: 5),
child: Image.asset(
'assets/images/title.webp',
width: 500, // Adjust as needed
height: 100, // Adjust as needed
),
),
),
],
),
), ),
), ),
), ),
@@ -119,8 +138,8 @@ class _PoetStudyScreenState extends State<PoetStudyScreen>
children: [ children: [
Image.asset( Image.asset(
'assets/images/go_subsets/Button_${(index + 1).toString().padLeft(2, '0')}.webp', 'assets/images/go_subsets/Button_${(index + 1).toString().padLeft(2, '0')}.webp',
width: 325, width: 260,
height: 325, height: 260,
fit: BoxFit.contain, fit: BoxFit.contain,
), ),
], ],

View File

@@ -1,5 +1,4 @@
import 'dart:io'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:audioplayers/audioplayers.dart'; import 'package:audioplayers/audioplayers.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
@@ -30,7 +29,7 @@ class _PoetScreenState extends State<PoetScreen> with WidgetsBindingObserver {
_backgroundImage = _backgroundImage =
'assets/images/subsets/Sub_${(widget.selectedIndex + 1).toString().padLeft(2, '0')}.webp'; 'assets/images/subsets/Sub_${(widget.selectedIndex + 1).toString().padLeft(2, '0')}.webp';
_source = AssetSource('audio/00${(widget.selectedIndex + 1).toString()}.wav'); _source = AssetSource('audio/${(widget.selectedIndex + 1).toString()}.mp3');
_audioPlayer.onPlayerStateChanged.listen((state) { _audioPlayer.onPlayerStateChanged.listen((state) {
if (mounted) { if (mounted) {
@@ -67,7 +66,7 @@ class _PoetScreenState extends State<PoetScreen> with WidgetsBindingObserver {
} }
void _setSystemUIOverlayStyle() { void _setSystemUIOverlayStyle() {
if (Platform.isAndroid) { if (defaultTargetPlatform == TargetPlatform.android) {
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky); SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
} }
} }
@@ -82,6 +81,7 @@ class _PoetScreenState extends State<PoetScreen> with WidgetsBindingObserver {
Future<void> _setAudio() async { Future<void> _setAudio() async {
try { try {
await _audioPlayer.setSource(_source); await _audioPlayer.setSource(_source);
_audioPlayer.play(_source);
} catch (e) { } catch (e) {
// Handle error, e.g., show a snackbar // Handle error, e.g., show a snackbar
print("Error setting audio source: $e"); print("Error setting audio source: $e");
@@ -91,9 +91,9 @@ class _PoetScreenState extends State<PoetScreen> with WidgetsBindingObserver {
@override @override
void dispose() { void dispose() {
WidgetsBinding.instance.removeObserver(this); WidgetsBinding.instance.removeObserver(this);
if (Platform.isAndroid) { // if (defaultTargetPlatform == TargetPlatform.android) {
SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge); // SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
} // }
_audioPlayer.dispose(); _audioPlayer.dispose();
super.dispose(); super.dispose();
} }
@@ -121,21 +121,23 @@ class _PoetScreenState extends State<PoetScreen> with WidgetsBindingObserver {
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
children: [ children: [
// 상단 바 (뒤로가기, 제목, 새로고침) // 상단 바 (뒤로가기, 제목, 새로고침)
Row( Padding(
mainAxisAlignment: MainAxisAlignment.spaceBetween, padding: const EdgeInsets.only(top: 50.0,left: 25),
children: [ child: Row(
_buildCircularImageButton('assets/images/ui/UI_Back.webp', () { mainAxisAlignment: MainAxisAlignment.spaceBetween,
// 이 버튼을 누르면 이전 화면으로 돌아갑니다. children: [
Navigator.pop(context); _buildCircularImageButton('assets/images/ui/UI_Back.webp', () {
}, size: 50, imageSize: 25), // 이 버튼을 누르면 이전 화면으로 돌아갑니다.
_buildCircularImageButton('assets/images/ui/UI_Replay.webp', () { Navigator.pop(context);
// Refresh action here }, size: 90, imageSize: 90),
}, size: 50, imageSize: 25), // _buildCircularImageButton('assets/images/ui/UI_Replay.webp', () {
], // // Refresh action here
// }, size: 100, imageSize: 100),
],
),
), ),
// 하단 음악 제어
_buildMusicControls(), _buildMusicControls(),
], ],
), ),
@@ -177,15 +179,16 @@ class _PoetScreenState extends State<PoetScreen> with WidgetsBindingObserver {
final newPosition = _position - const Duration(seconds: 5); final newPosition = _position - const Duration(seconds: 5);
_audioPlayer.seek(newPosition > Duration.zero ? newPosition : Duration.zero); _audioPlayer.seek(newPosition > Duration.zero ? newPosition : Duration.zero);
}), }),
const SizedBox(width: 16), const SizedBox(width: 100),
_buildPlayPauseButton(), _buildPlayPauseButton(),
const SizedBox(width: 16), const SizedBox(width: 100),
_buildCircularImageButton('assets/images/ui/UI_5plus.webp', () { _buildCircularImageButton('assets/images/ui/UI_5plus.webp', () {
final newPosition = _position + const Duration(seconds: 5); final newPosition = _position + const Duration(seconds: 5);
_audioPlayer.seek(newPosition < _duration ? newPosition : _duration); _audioPlayer.seek(newPosition < _duration ? newPosition : _duration);
}), }),
], ],
), ),
], ],
); );
} }
@@ -204,37 +207,33 @@ class _PoetScreenState extends State<PoetScreen> with WidgetsBindingObserver {
} }
}, },
child: Container( child: Container(
width: 80, width: 150,
height: 80, height: 150,
decoration: BoxDecoration(
color: const Color(0xFFF07B41),
shape: BoxShape.circle,
border: Border.all(color: Colors.white, width: 2),
),
child: Center( child: Center(
child: _isPlaying child: _isPlaying
? const Icon(Icons.pause, color: Colors.white, size: 50) ? Image.asset(
'assets/images/ui/UI_Pause.webp',
width: 191,
height: 190,
)
: Image.asset( : Image.asset(
'assets/images/ui/UI_Play.webp', 'assets/images/ui/UI_Play.webp',
width: 50, width: 191,
height: 50, height: 190,
), ),
), ),
), ),
); );
} }
Widget _buildCircularImageButton(String imagePath, VoidCallback onPressed, {double size = 80, double imageSize = 50}) { Widget _buildCircularImageButton(String imagePath, VoidCallback onPressed, {double size = 100, double imageSize = 100}) {
return GestureDetector( return GestureDetector(
onTap: onPressed, onTap: onPressed,
child: Container( child: Container(
width: size, width: size,
height: size, height: size,
decoration: BoxDecoration(
color: const Color(0xFFF07B41),
shape: BoxShape.circle,
border: Border.all(color: Colors.white, width: 2),
),
child: Center( child: Center(
child: Image.asset( child: Image.asset(
imagePath, imagePath,
@@ -258,5 +257,5 @@ class _PoetScreenState extends State<PoetScreen> with WidgetsBindingObserver {
].join(':'); ].join(':');
} }
} }

View File

@@ -4,10 +4,10 @@ project(runner LANGUAGES CXX)
# The name of the executable created for the application. Change this to change # The name of the executable created for the application. Change this to change
# the on-disk name of your application. # the on-disk name of your application.
set(BINARY_NAME "poet") set(BINARY_NAME "시인의 서재")
# The unique GTK application identifier for this application. See: # The unique GTK application identifier for this application. See:
# https://wiki.gnome.org/HowDoI/ChooseApplicationID # https://wiki.gnome.org/HowDoI/ChooseApplicationID
set(APPLICATION_ID "com.example.poet") set(APPLICATION_ID "com.example.poet_repository")
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent # Explicitly opt in to modern CMake behaviors to avoid warnings with recent
# versions of CMake. # versions of CMake.

View File

@@ -5,10 +5,10 @@
// 'flutter create' template. // 'flutter create' template.
// The application's name. By default this is also the title of the Flutter window. // The application's name. By default this is also the title of the Flutter window.
PRODUCT_NAME = poet PRODUCT_NAME = 시인의 서재
// The application's bundle identifier // The application's bundle identifier
PRODUCT_BUNDLE_IDENTIFIER = com.example.poet PRODUCT_BUNDLE_IDENTIFIER = com.example.poet_repository
// The copyright displayed in application information // The copyright displayed in application information
PRODUCT_COPYRIGHT = Copyright © 2025 com.example. All rights reserved. PRODUCT_COPYRIGHT = Copyright © 2025 com.example. All rights reserved.

View File

@@ -1,6 +1,22 @@
# Generated by pub # Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile # See https://dart.dev/tools/pub/glossary#lockfile
packages: packages:
archive:
dependency: transitive
description:
name: archive
sha256: "2fde1607386ab523f7a36bb3e7edb43bd58e6edaf2ffb29d8a6d578b297fdbbd"
url: "https://pub.dev"
source: hosted
version: "4.0.7"
args:
dependency: transitive
description:
name: args
sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
url: "https://pub.dev"
source: hosted
version: "2.7.0"
async: async:
dependency: transitive dependency: transitive
description: description:
@@ -81,6 +97,22 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.4.0" version: "1.4.0"
checked_yaml:
dependency: transitive
description:
name: checked_yaml
sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f"
url: "https://pub.dev"
source: hosted
version: "2.0.4"
cli_util:
dependency: transitive
description:
name: cli_util
sha256: ff6785f7e9e3c38ac98b2fb035701789de90154024a75b6cb926445e83197d1c
url: "https://pub.dev"
source: hosted
version: "0.4.2"
clock: clock:
dependency: transitive dependency: transitive
description: description:
@@ -150,6 +182,14 @@ packages:
description: flutter description: flutter
source: sdk source: sdk
version: "0.0.0" version: "0.0.0"
flutter_launcher_icons:
dependency: "direct dev"
description:
name: flutter_launcher_icons
sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea"
url: "https://pub.dev"
source: hosted
version: "0.13.1"
flutter_lints: flutter_lints:
dependency: "direct dev" dependency: "direct dev"
description: description:
@@ -184,6 +224,22 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.1.2" version: "4.1.2"
image:
dependency: transitive
description:
name: image
sha256: "4e973fcf4caae1a4be2fa0a13157aa38a8f9cb049db6529aa00b4d71abc4d928"
url: "https://pub.dev"
source: hosted
version: "4.5.4"
json_annotation:
dependency: transitive
description:
name: json_annotation
sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1"
url: "https://pub.dev"
source: hosted
version: "4.9.0"
leak_tracker: leak_tracker:
dependency: transitive dependency: transitive
description: description:
@@ -296,6 +352,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.3.0" version: "2.3.0"
petitparser:
dependency: transitive
description:
name: petitparser
sha256: "1a97266a94f7350d30ae522c0af07890c70b8e62c71e8e3920d1db4d23c057d1"
url: "https://pub.dev"
source: hosted
version: "7.0.1"
platform: platform:
dependency: transitive dependency: transitive
description: description:
@@ -312,6 +376,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.8" version: "2.1.8"
posix:
dependency: transitive
description:
name: posix
sha256: "6323a5b0fa688b6a010df4905a56b00181479e6d10534cecfecede2aa55add61"
url: "https://pub.dev"
source: hosted
version: "6.0.3"
sky_engine: sky_engine:
dependency: transitive dependency: transitive
description: flutter description: flutter
@@ -429,6 +501,22 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.0" version: "1.1.0"
xml:
dependency: transitive
description:
name: xml
sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025"
url: "https://pub.dev"
source: hosted
version: "6.6.1"
yaml:
dependency: transitive
description:
name: yaml
sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce
url: "https://pub.dev"
source: hosted
version: "3.1.3"
sdks: sdks:
dart: ">=3.8.1 <4.0.0" dart: ">=3.8.1 <4.0.0"
flutter: ">=3.29.0" flutter: ">=3.29.0"

View File

@@ -1,5 +1,5 @@
name: poet name: poet_repository
description: "A new Flutter project." description: "시인의 서재"
# The following line prevents the package from being accidentally published to # The following line prevents the package from being accidentally published to
# pub.dev using `flutter pub publish`. This is preferred for private packages. # pub.dev using `flutter pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev publish_to: 'none' # Remove this line if you wish to publish to pub.dev
@@ -39,6 +39,7 @@ dependencies:
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
sdk: flutter sdk: flutter
flutter_launcher_icons: "^0.13.1"
# The "flutter_lints" package below contains a set of recommended lints to # The "flutter_lints" package below contains a set of recommended lints to
# encourage good coding practices. The lint set provided by the package is # encourage good coding practices. The lint set provided by the package is
@@ -94,3 +95,9 @@ flutter:
# #
# For details regarding fonts from package dependencies, # For details regarding fonts from package dependencies,
# see https://flutter.dev/to/font-from-package # see https://flutter.dev/to/font-from-package
flutter_launcher_icons:
android: "launcher_icon"
ios: true
image_path: "assets/images/ui/UI_Play.webp"
remove_alpha_ios: true

View File

@@ -8,7 +8,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:poet/main.dart'; import 'package:poet_repository/main.dart';
void main() { void main() {
testWidgets('Counter increments smoke test', (WidgetTester tester) async { testWidgets('Counter increments smoke test', (WidgetTester tester) async {

View File

@@ -23,13 +23,13 @@
<!-- iOS meta tags & icons --> <!-- iOS meta tags & icons -->
<meta name="mobile-web-app-capable" content="yes"> <meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="poet"> <meta name="apple-mobile-web-app-title" content="시인의 서재">
<link rel="apple-touch-icon" href="icons/Icon-192.png"> <link rel="apple-touch-icon" href="icons/Icon-192.png">
<!-- Favicon --> <!-- Favicon -->
<link rel="icon" type="image/png" href="favicon.png"/> <link rel="icon" type="image/png" href="favicon.png"/>
<title>poet</title> <title>시인의 서재</title>
<link rel="manifest" href="manifest.json"> <link rel="manifest" href="manifest.json">
</head> </head>
<body> <body>

View File

@@ -1,11 +1,11 @@
{ {
"name": "poet", "name": "시인의 서재",
"short_name": "poet", "short_name": "시인의 서재",
"start_url": ".", "start_url": ".",
"display": "standalone", "display": "standalone",
"background_color": "#0175C2", "background_color": "#0175C2",
"theme_color": "#0175C2", "theme_color": "#0175C2",
"description": "A new Flutter project.", "description": "시인의 서재",
"orientation": "portrait-primary", "orientation": "portrait-primary",
"prefer_related_applications": false, "prefer_related_applications": false,
"icons": [ "icons": [

View File

@@ -1,10 +1,10 @@
# Project-level configuration. # Project-level configuration.
cmake_minimum_required(VERSION 3.14) cmake_minimum_required(VERSION 3.14)
project(poet LANGUAGES CXX) project(시인의 서재 LANGUAGES CXX)
# The name of the executable created for the application. Change this to change # The name of the executable created for the application. Change this to change
# the on-disk name of your application. # the on-disk name of your application.
set(BINARY_NAME "poet") set(BINARY_NAME "시인의 서재")
# Explicitly opt in to modern CMake behaviors to avoid warnings with recent # Explicitly opt in to modern CMake behaviors to avoid warnings with recent
# versions of CMake. # versions of CMake.