diff --git a/app/assets/fonts/.gitignore b/app/assets/fonts/.gitignore
deleted file mode 100644
index e69de29..0000000
diff --git a/app/assets/fonts/Ownglyph.ttf b/app/assets/fonts/Ownglyph.ttf
new file mode 100644
index 0000000..8da1205
Binary files /dev/null and b/app/assets/fonts/Ownglyph.ttf differ
diff --git a/app/assets/fonts/SCDream-bold.otf b/app/assets/fonts/SCDream-bold.otf
new file mode 100644
index 0000000..4e20297
Binary files /dev/null and b/app/assets/fonts/SCDream-bold.otf differ
diff --git a/app/assets/fonts/SCDream-medium.otf b/app/assets/fonts/SCDream-medium.otf
new file mode 100644
index 0000000..628e828
Binary files /dev/null and b/app/assets/fonts/SCDream-medium.otf differ
diff --git a/app/assets/icons/.gitignore b/app/assets/icons/.gitignore
deleted file mode 100644
index e69de29..0000000
diff --git a/app/assets/icons/googleicon.svg b/app/assets/icons/googleicon.svg
new file mode 100644
index 0000000..e375528
--- /dev/null
+++ b/app/assets/icons/googleicon.svg
@@ -0,0 +1,7 @@
+
diff --git a/app/assets/icons/kakaoicon.svg b/app/assets/icons/kakaoicon.svg
new file mode 100644
index 0000000..12491cb
--- /dev/null
+++ b/app/assets/icons/kakaoicon.svg
@@ -0,0 +1,4 @@
+
diff --git a/app/assets/icons/navericon.svg b/app/assets/icons/navericon.svg
new file mode 100644
index 0000000..ec2ea61
--- /dev/null
+++ b/app/assets/icons/navericon.svg
@@ -0,0 +1,3 @@
+
diff --git a/app/assets/img/cat.png b/app/assets/img/cat.png
new file mode 100644
index 0000000..5289cce
Binary files /dev/null and b/app/assets/img/cat.png differ
diff --git a/app/assets/img/foot.png b/app/assets/img/foot.png
new file mode 100644
index 0000000..a1ba2c2
Binary files /dev/null and b/app/assets/img/foot.png differ
diff --git a/app/assets/img/mainball.png b/app/assets/img/mainball.png
new file mode 100644
index 0000000..5650b97
Binary files /dev/null and b/app/assets/img/mainball.png differ
diff --git a/app/assets/img/maindog.png b/app/assets/img/maindog.png
new file mode 100644
index 0000000..1cd1938
Binary files /dev/null and b/app/assets/img/maindog.png differ
diff --git a/app/assets/video/splash.mp4 b/app/assets/video/splash.mp4
new file mode 100644
index 0000000..e045cce
Binary files /dev/null and b/app/assets/video/splash.mp4 differ
diff --git a/app/lib/main.dart b/app/lib/main.dart
index a5537df..357138e 100644
--- a/app/lib/main.dart
+++ b/app/lib/main.dart
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
+import 'screens/splash_screen.dart';
void main() {
runApp(RupApp());
@@ -9,18 +10,6 @@ class RupApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
- return MaterialApp(
- home: Scaffold(
- body: Container(
- padding: EdgeInsets.fromLTRB(40, 0, 40, 0),
- margin: EdgeInsets.only(top: 156),
-
- child: Column(
- crossAxisAlignment: CrossAxisAlignment.start,
- children: [Text('Right'), Text('Use for'), Text('Pet')],
- ),
- ),
- ),
- );
+ return MaterialApp(debugShowCheckedModeBanner: false, home: SplashScreen());
}
}
diff --git a/app/lib/screens/home_screen.dart b/app/lib/screens/home_screen.dart
new file mode 100644
index 0000000..028ed83
--- /dev/null
+++ b/app/lib/screens/home_screen.dart
@@ -0,0 +1,42 @@
+import 'package:flutter/material.dart';
+import 'welcome_screen.dart';
+
+class HomeScreen extends StatelessWidget {
+ const HomeScreen({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ appBar: AppBar(
+ title: const Text(
+ '홈',
+ style: TextStyle(fontFamily: 'SCDream', fontWeight: FontWeight.bold),
+ ),
+ centerTitle: true,
+ actions: [
+ IconButton(
+ icon: const Icon(Icons.logout),
+ onPressed: () {
+ // Mock Logout: Go back to Welcome Screen
+ Navigator.pushReplacement(
+ context,
+ MaterialPageRoute(builder: (context) => const WelcomeScreen()),
+ );
+ },
+ ),
+ ],
+ ),
+ body: const Center(
+ child: Text(
+ '로그인 성공!\n여기는 메인 홈 화면입니다.',
+ textAlign: TextAlign.center,
+ style: TextStyle(
+ fontFamily: 'SCDream',
+ fontWeight: FontWeight.w500,
+ fontSize: 18,
+ ),
+ ),
+ ),
+ );
+ }
+}
diff --git a/app/lib/screens/login_screen.dart b/app/lib/screens/login_screen.dart
new file mode 100644
index 0000000..69101a9
--- /dev/null
+++ b/app/lib/screens/login_screen.dart
@@ -0,0 +1,186 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_svg/flutter_svg.dart';
+
+class LoginScreen extends StatelessWidget {
+ const LoginScreen({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ backgroundColor: Colors.white,
+ appBar: AppBar(
+ backgroundColor: Colors.white,
+ elevation: 0,
+ leading: IconButton(
+ icon: const Icon(Icons.arrow_back_ios, color: Colors.black, size: 20),
+ onPressed: () => Navigator.pop(context),
+ ),
+ title: const Text(
+ '로그인',
+ style: TextStyle(
+ fontSize: 15,
+ fontFamily: 'SCDream',
+ fontWeight: FontWeight.w500,
+ color: Colors.black,
+ ),
+ ),
+ centerTitle: true,
+ ),
+ body: Padding(
+ padding: const EdgeInsets.fromLTRB(20, 0, 20, 240),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ SizedBox(height: 20),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.start,
+ children: [
+ Image.asset('assets/img/foot.png', width: 30),
+ SizedBox(width: 10),
+ Text(
+ '로그인',
+ style: TextStyle(
+ fontSize: 24,
+ fontFamily: 'SCDream',
+ fontWeight: FontWeight.bold,
+ color: Colors.black,
+ ),
+ ),
+ ],
+ ),
+ SizedBox(height: 10),
+ Text(
+ 'RUP에 어서오세요!\n지금 로그인하고 다양한 서비스를 이용해보세요.',
+ style: TextStyle(
+ fontSize: 14,
+ fontFamily: 'SCDream',
+ fontWeight: FontWeight.w500,
+ color: Colors.black,
+ ),
+ textAlign: TextAlign.start,
+ ),
+ Spacer(),
+ Align(
+ alignment: Alignment.centerRight,
+ child: Image.asset('assets/img/cat.png', height: 150),
+ ),
+ SizedBox(height: 10),
+ ],
+ ),
+ ),
+ bottomSheet: Container(
+ color: Colors.white,
+ padding: const EdgeInsets.fromLTRB(20, 20, 20, 40),
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ crossAxisAlignment: CrossAxisAlignment.stretch,
+ children: [
+ // Naver Login Button
+ _SocialLoginButton(
+ text: '네이버 로그인',
+ textColor: Colors.white,
+ fontFamily: 'SCDream',
+ fontWeight: FontWeight.bold,
+ fontSize: 15,
+ backgroundColor: const Color(0xFF00D03F),
+ onPressed: () {},
+ iconPath: 'assets/icons/navericon.svg',
+ ),
+ const SizedBox(height: 15),
+ // Kakao Login Button
+ _SocialLoginButton(
+ text: '카카오 로그인',
+ textColor: const Color(0xFF212121),
+ fontFamily: 'SCDream',
+ fontWeight: FontWeight.bold,
+ fontSize: 15,
+ backgroundColor: const Color(0xFFFAE100),
+ onPressed: () {},
+ iconPath: 'assets/icons/kakaoicon.svg',
+ ),
+ const SizedBox(height: 15),
+ // Google Login Button
+ _SocialLoginButton(
+ text: '구글 로그인',
+ textColor: const Color(0xFF17191A),
+ fontFamily: 'SCDream',
+ fontWeight: FontWeight.bold,
+ fontSize: 15,
+ backgroundColor: Colors.white,
+ onPressed: () {},
+ iconPath: 'assets/icons/googleicon.svg',
+ isBordered: true,
+ ),
+ ],
+ ),
+ ),
+ );
+ }
+}
+
+class _SocialLoginButton extends StatelessWidget {
+ final String text;
+ final Color textColor;
+ final Color backgroundColor;
+ final VoidCallback onPressed;
+ final String iconPath;
+ final bool isBordered;
+ final String fontFamily;
+ final double fontSize;
+ final FontWeight fontWeight;
+
+ const _SocialLoginButton({
+ required this.text,
+ required this.textColor,
+ required this.backgroundColor,
+ required this.onPressed,
+ required this.iconPath,
+ this.isBordered = false,
+ this.fontFamily = 'SCDream',
+ this.fontWeight = FontWeight.w500,
+ this.fontSize = 16,
+ });
+
+ @override
+ Widget build(BuildContext context) {
+ return SizedBox(
+ height: 50,
+ child: ElevatedButton(
+ onPressed: onPressed,
+ style: ElevatedButton.styleFrom(
+ backgroundColor: backgroundColor,
+ foregroundColor: textColor,
+ elevation: 0,
+ shape: StadiumBorder(
+ side: isBordered
+ ? BorderSide(color: Colors.grey[300]!)
+ : BorderSide.none,
+ ),
+ padding: const EdgeInsets.symmetric(horizontal: 20),
+ ),
+ child: Row(
+ children: [
+ SvgPicture.asset(
+ iconPath,
+ width: 24,
+ height: 24,
+ fit: BoxFit.contain,
+ ),
+ Expanded(
+ child: Text(
+ text,
+ style: TextStyle(
+ fontFamily: fontFamily,
+ fontWeight: fontWeight,
+ fontSize: fontSize,
+ ),
+ textAlign: TextAlign.center,
+ ),
+ ),
+ const SizedBox(width: 24),
+ ],
+ ),
+ ),
+ );
+ }
+}
diff --git a/app/lib/screens/signup_screen.dart b/app/lib/screens/signup_screen.dart
new file mode 100644
index 0000000..fa48f24
--- /dev/null
+++ b/app/lib/screens/signup_screen.dart
@@ -0,0 +1,186 @@
+import 'package:flutter/material.dart';
+import 'package:flutter_svg/flutter_svg.dart';
+
+class SignupScreen extends StatelessWidget {
+ const SignupScreen({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ backgroundColor: Colors.white,
+ appBar: AppBar(
+ backgroundColor: Colors.white,
+ elevation: 0,
+ leading: IconButton(
+ icon: Icon(Icons.arrow_back_ios, color: Colors.black, size: 20),
+ onPressed: () => Navigator.pop(context),
+ ),
+ title: Text(
+ '회원가입',
+ style: TextStyle(
+ fontSize: 15,
+ fontFamily: 'SCDream',
+ fontWeight: FontWeight.w500,
+ color: Colors.black,
+ ),
+ ),
+ centerTitle: true,
+ ),
+ body: Padding(
+ padding: const EdgeInsets.fromLTRB(20, 0, 20, 240),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ SizedBox(height: 20),
+ Row(
+ mainAxisAlignment: MainAxisAlignment.start,
+ children: [
+ Image.asset('assets/img/foot.png', width: 30),
+ SizedBox(width: 10),
+ Text(
+ '서비스 이용 약관',
+ style: TextStyle(
+ fontSize: 24,
+ fontFamily: 'SCDream',
+ fontWeight: FontWeight.bold,
+ color: Colors.black,
+ ),
+ ),
+ ],
+ ),
+ SizedBox(height: 10),
+ Text(
+ '똑똑한 반려생활을 위한 첫걸음,\nRUP에 오신것을 환영해요!',
+ style: TextStyle(
+ fontSize: 14,
+ fontFamily: 'SCDream',
+ fontWeight: FontWeight.w500,
+ color: Colors.black,
+ ),
+ textAlign: TextAlign.start,
+ ),
+ Spacer(),
+ Align(
+ alignment: Alignment.centerRight,
+ child: Image.asset('assets/img/cat.png', height: 150),
+ ),
+ SizedBox(height: 10),
+ ],
+ ),
+ ),
+ bottomSheet: Container(
+ color: Colors.white,
+ padding: EdgeInsets.fromLTRB(20, 20, 20, 40),
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ crossAxisAlignment: CrossAxisAlignment.stretch,
+ children: [
+ // Naver Login Button
+ _SocialLoginButton(
+ text: '네이버 로그인',
+ textColor: Colors.white,
+ fontFamily: 'SCDream',
+ fontWeight: FontWeight.bold,
+ fontSize: 15,
+ backgroundColor: Color(0xFF00D03F),
+ onPressed: () {},
+ iconPath: 'assets/icons/navericon.svg',
+ ),
+ SizedBox(height: 15),
+ // Kakao Login Button
+ _SocialLoginButton(
+ text: '카카오로 3초만에 시작하기',
+ textColor: Color(0xFF212121),
+ fontFamily: 'SCDream',
+ fontWeight: FontWeight.bold,
+ fontSize: 15,
+ backgroundColor: Color(0xFFFAE100),
+ onPressed: () {},
+ iconPath: 'assets/icons/kakaoicon.svg',
+ ),
+ SizedBox(height: 15),
+ // Google Login Button
+ _SocialLoginButton(
+ text: '구글 로그인',
+ textColor: Color(0xFF17191A),
+ fontFamily: 'SCDream',
+ fontWeight: FontWeight.bold,
+ fontSize: 15,
+ backgroundColor: Colors.white,
+ onPressed: () {},
+ iconPath: 'assets/icons/googleicon.svg',
+ isBordered: true,
+ ),
+ ],
+ ),
+ ),
+ );
+ }
+}
+
+class _SocialLoginButton extends StatelessWidget {
+ final String text;
+ final Color textColor;
+ final Color backgroundColor;
+ final VoidCallback onPressed;
+ final String iconPath;
+ final bool isBordered;
+ final String fontFamily;
+ final double fontSize;
+ final FontWeight fontWeight;
+
+ const _SocialLoginButton({
+ required this.text,
+ required this.textColor,
+ required this.backgroundColor,
+ required this.onPressed,
+ required this.iconPath,
+ this.isBordered = false,
+ this.fontFamily = 'SCDream',
+ this.fontWeight = FontWeight.w500,
+ this.fontSize = 16,
+ });
+
+ @override
+ Widget build(BuildContext context) {
+ return SizedBox(
+ height: 50,
+ child: ElevatedButton(
+ onPressed: onPressed,
+ style: ElevatedButton.styleFrom(
+ backgroundColor: backgroundColor,
+ foregroundColor: textColor,
+ elevation: 0,
+ shape: StadiumBorder(
+ side: isBordered
+ ? BorderSide(color: Colors.grey[300]!)
+ : BorderSide.none,
+ ),
+ padding: EdgeInsets.symmetric(horizontal: 20),
+ ),
+ child: Row(
+ children: [
+ SvgPicture.asset(
+ iconPath,
+ width: 24,
+ height: 24,
+ fit: BoxFit.contain,
+ ),
+ Expanded(
+ child: Text(
+ text,
+ style: TextStyle(
+ fontFamily: fontFamily,
+ fontWeight: fontWeight,
+ fontSize: fontSize,
+ ),
+ textAlign: TextAlign.center,
+ ),
+ ),
+ SizedBox(width: 24),
+ ],
+ ),
+ ),
+ );
+ }
+}
diff --git a/app/lib/screens/splash_screen.dart b/app/lib/screens/splash_screen.dart
new file mode 100644
index 0000000..bce0c37
--- /dev/null
+++ b/app/lib/screens/splash_screen.dart
@@ -0,0 +1,67 @@
+import 'dart:async';
+import 'package:flutter/material.dart';
+// import 'package:video_player/video_player.dart';
+import 'welcome_screen.dart';
+import 'home_screen.dart';
+
+class SplashScreen extends StatefulWidget {
+ const SplashScreen({super.key});
+
+ @override
+ State createState() => _SplashScreenState();
+}
+
+class _SplashScreenState extends State {
+ // Mock login history flag
+ final bool hasLoginHistory = true;
+
+ @override
+ void initState() {
+ super.initState();
+ _checkLoginHistory();
+ }
+
+ Future _checkLoginHistory() async {
+ // Simulate loading time (e.g. 2 seconds)
+ await Future.delayed(const Duration(seconds: 2));
+
+ if (!mounted) return;
+
+ if (hasLoginHistory) {
+ Navigator.pushReplacement(
+ context,
+ MaterialPageRoute(builder: (context) => const HomeScreen()),
+ );
+ } else {
+ Navigator.pushReplacement(
+ context,
+ MaterialPageRoute(builder: (context) => const WelcomeScreen()),
+ );
+ }
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ backgroundColor: const Color(0xFFFF7500), // Original Brand Color
+ body: Center(
+ child: Column(
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Image.asset('assets/img/maindog.png', width: 150, height: 150),
+ const SizedBox(height: 20),
+ const Text(
+ 'RUP',
+ style: TextStyle(
+ fontFamily: 'SCDream',
+ fontWeight: FontWeight.bold,
+ fontSize: 32,
+ color: Colors.white,
+ ),
+ ),
+ ],
+ ),
+ ),
+ );
+ }
+}
diff --git a/app/lib/screens/welcome_screen.dart b/app/lib/screens/welcome_screen.dart
new file mode 100644
index 0000000..acb125b
--- /dev/null
+++ b/app/lib/screens/welcome_screen.dart
@@ -0,0 +1,16 @@
+import 'package:flutter/material.dart';
+import '../widgets/intro_body.dart';
+import '../widgets/login_panel.dart';
+
+class WelcomeScreen extends StatelessWidget {
+ const WelcomeScreen({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ backgroundColor: Color(0xFFFF7500),
+ body: IntroBody(),
+ bottomSheet: LoginPanel(),
+ );
+ }
+}
diff --git a/app/lib/widgets/intro_body.dart b/app/lib/widgets/intro_body.dart
new file mode 100644
index 0000000..7ad20bd
--- /dev/null
+++ b/app/lib/widgets/intro_body.dart
@@ -0,0 +1,79 @@
+import 'package:flutter/material.dart';
+
+class IntroBody extends StatelessWidget {
+ const IntroBody({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ return Container(
+ padding: EdgeInsets.fromLTRB(40, 0, 40, 0),
+ margin: EdgeInsets.only(top: 156),
+ child: LayoutBuilder(
+ builder: (context, constraints) {
+ return FittedBox(
+ fit: BoxFit.scaleDown,
+ child: Container(
+ constraints: BoxConstraints(minWidth: constraints.maxWidth),
+ child: Row(
+ mainAxisAlignment: MainAxisAlignment.spaceBetween,
+ crossAxisAlignment: CrossAxisAlignment.end,
+ children: [
+ Column(
+ mainAxisSize: MainAxisSize.min,
+ crossAxisAlignment: CrossAxisAlignment.center,
+ children: [
+ Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Text(
+ 'Right',
+ style: TextStyle(
+ fontSize: 60,
+ fontFamily: 'Ownglyph',
+ color: Colors.white,
+ ),
+ ),
+ Text(
+ 'Use for',
+ style: TextStyle(
+ fontSize: 60,
+ fontFamily: 'Ownglyph',
+ color: Colors.white,
+ ),
+ ),
+ Padding(
+ padding: const EdgeInsets.only(bottom: 26),
+ child: Text(
+ 'Pet',
+ style: TextStyle(
+ fontSize: 60,
+ fontFamily: 'Ownglyph',
+ color: Colors.white,
+ ),
+ ),
+ ),
+ ],
+ ),
+ Image.asset('assets/img/mainball.png'),
+ ],
+ ),
+ Column(
+ mainAxisSize: MainAxisSize.min,
+ crossAxisAlignment: CrossAxisAlignment.end,
+ children: [
+ Image.asset('assets/img/maindog.png'),
+ Opacity(
+ opacity: 0.0,
+ child: Image.asset('assets/img/mainball.png'),
+ ),
+ ],
+ ),
+ ],
+ ),
+ ),
+ );
+ },
+ ),
+ );
+ }
+}
diff --git a/app/lib/widgets/login_panel.dart b/app/lib/widgets/login_panel.dart
new file mode 100644
index 0000000..7481dfd
--- /dev/null
+++ b/app/lib/widgets/login_panel.dart
@@ -0,0 +1,86 @@
+import 'package:flutter/material.dart';
+import '../screens/signup_screen.dart';
+import '../screens/login_screen.dart';
+
+class LoginPanel extends StatelessWidget {
+ const LoginPanel({super.key});
+
+ @override
+ Widget build(BuildContext context) {
+ return Container(
+ width: double.infinity,
+ color: Color(0xFFFF7500),
+ padding: EdgeInsets.fromLTRB(40, 0, 40, 40),
+ child: Column(
+ mainAxisSize: MainAxisSize.min,
+ mainAxisAlignment: MainAxisAlignment.center,
+ children: [
+ Text(
+ '간편한 반려생활을 위한 첫걸음,\nRUP에 오신것을 환영합니다!',
+ style: TextStyle(
+ fontSize: 12,
+ fontFamily: 'SCDream',
+ fontWeight: FontWeight.w500,
+ color: Colors.black,
+ ),
+ textAlign: TextAlign.center,
+ ),
+ SizedBox(height: 30),
+ SizedBox(
+ width: double.infinity,
+ child: ElevatedButton(
+ onPressed: () {
+ Navigator.push(
+ context,
+ MaterialPageRoute(builder: (context) => SignupScreen()),
+ );
+ },
+ style: ElevatedButton.styleFrom(
+ backgroundColor: Colors.white,
+ shape: StadiumBorder(),
+ padding: EdgeInsets.all(15),
+ ),
+ child: Stack(
+ alignment: Alignment.center,
+ children: [
+ Align(
+ alignment: Alignment.center,
+ child: Text(
+ '시작하기',
+ style: TextStyle(
+ fontFamily: 'SCDream',
+ fontWeight: FontWeight.bold,
+ color: Colors.black,
+ ),
+ ),
+ ),
+ ],
+ ),
+ ),
+ ),
+
+ SizedBox(height: 5),
+ TextButton(
+ onPressed: () {
+ Navigator.push(
+ context,
+ MaterialPageRoute(builder: (context) => LoginScreen()),
+ );
+ },
+ child: Text(
+ '기존 계정으로 로그인',
+ style: TextStyle(
+ fontFamily: 'SCDream',
+ fontWeight: FontWeight.w500,
+ fontSize: 12,
+ color: Colors.white,
+ decoration: TextDecoration.underline,
+ decorationColor: Colors.white,
+ ),
+ ),
+ ),
+ ],
+ ),
+ );
+ }
+}
diff --git a/app/macos/Flutter/GeneratedPluginRegistrant.swift b/app/macos/Flutter/GeneratedPluginRegistrant.swift
index cccf817..e292918 100644
--- a/app/macos/Flutter/GeneratedPluginRegistrant.swift
+++ b/app/macos/Flutter/GeneratedPluginRegistrant.swift
@@ -5,6 +5,8 @@
import FlutterMacOS
import Foundation
+import video_player_avfoundation
func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
+ FVPVideoPlayerPlugin.register(with: registry.registrar(forPlugin: "FVPVideoPlayerPlugin"))
}
diff --git a/app/pubspec.lock b/app/pubspec.lock
index 688d871..f3bb326 100644
--- a/app/pubspec.lock
+++ b/app/pubspec.lock
@@ -1,6 +1,14 @@
# Generated by pub
# See https://dart.dev/tools/pub/glossary#lockfile
packages:
+ args:
+ dependency: transitive
+ description:
+ name: args
+ sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.7.0"
async:
dependency: transitive
description:
@@ -41,6 +49,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.19.1"
+ csslib:
+ dependency: transitive
+ description:
+ name: csslib
+ sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.0.2"
cupertino_icons:
dependency: "direct main"
description:
@@ -70,11 +86,48 @@ packages:
url: "https://pub.dev"
source: hosted
version: "6.0.0"
+ flutter_svg:
+ dependency: "direct main"
+ description:
+ name: flutter_svg
+ sha256: "87fbd7c534435b6c5d9d98b01e1fd527812b82e68ddd8bd35fc45ed0fa8f0a95"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.2.3"
flutter_test:
dependency: "direct dev"
description: flutter
source: sdk
version: "0.0.0"
+ flutter_web_plugins:
+ dependency: transitive
+ description: flutter
+ source: sdk
+ version: "0.0.0"
+ html:
+ dependency: transitive
+ description:
+ name: html
+ sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.15.6"
+ http:
+ dependency: transitive
+ description:
+ name: http
+ sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.6.0"
+ http_parser:
+ dependency: transitive
+ description:
+ name: http_parser
+ sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
+ url: "https://pub.dev"
+ source: hosted
+ version: "4.1.2"
leak_tracker:
dependency: transitive
description:
@@ -139,6 +192,30 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.9.1"
+ path_parsing:
+ dependency: transitive
+ description:
+ name: path_parsing
+ sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.0"
+ petitparser:
+ dependency: transitive
+ description:
+ name: petitparser
+ sha256: "1a97266a94f7350d30ae522c0af07890c70b8e62c71e8e3920d1db4d23c057d1"
+ url: "https://pub.dev"
+ source: hosted
+ version: "7.0.1"
+ plugin_platform_interface:
+ dependency: transitive
+ description:
+ name: plugin_platform_interface
+ sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.1.8"
sky_engine:
dependency: transitive
description: flutter
@@ -192,6 +269,38 @@ packages:
url: "https://pub.dev"
source: hosted
version: "0.7.7"
+ typed_data:
+ dependency: transitive
+ description:
+ name: typed_data
+ sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.4.0"
+ vector_graphics:
+ dependency: transitive
+ description:
+ name: vector_graphics
+ sha256: a4f059dc26fc8295b5921376600a194c4ec7d55e72f2fe4c7d2831e103d461e6
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.19"
+ vector_graphics_codec:
+ dependency: transitive
+ description:
+ name: vector_graphics_codec
+ sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.13"
+ vector_graphics_compiler:
+ dependency: transitive
+ description:
+ name: vector_graphics_compiler
+ sha256: d354a7ec6931e6047785f4db12a1f61ec3d43b207fc0790f863818543f8ff0dc
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.19"
vector_math:
dependency: transitive
description:
@@ -200,6 +309,46 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.2.0"
+ video_player:
+ dependency: "direct main"
+ description:
+ name: video_player
+ sha256: "096bc28ce10d131be80dfb00c223024eb0fba301315a406728ab43dd99c45bdf"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.10.1"
+ video_player_android:
+ dependency: transitive
+ description:
+ name: video_player_android
+ sha256: ee4fd520b0cafa02e4a867a0f882092e727cdaa1a2d24762171e787f8a502b0a
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.9.1"
+ video_player_avfoundation:
+ dependency: transitive
+ description:
+ name: video_player_avfoundation
+ sha256: "2a7aaf2f28212c285e0fb29b50728bbea513d743dd48d3024098015f169fb937"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.8.10"
+ video_player_platform_interface:
+ dependency: transitive
+ description:
+ name: video_player_platform_interface
+ sha256: "57c5d73173f76d801129d0531c2774052c5a7c11ccb962f1830630decd9f24ec"
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.6.0"
+ video_player_web:
+ dependency: transitive
+ description:
+ name: video_player_web
+ sha256: "9f3c00be2ef9b76a95d94ac5119fb843dca6f2c69e6c9968f6f2b6c9e7afbdeb"
+ url: "https://pub.dev"
+ source: hosted
+ version: "2.4.0"
vm_service:
dependency: transitive
description:
@@ -208,6 +357,22 @@ packages:
url: "https://pub.dev"
source: hosted
version: "15.0.2"
+ web:
+ dependency: transitive
+ description:
+ name: web
+ sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
+ url: "https://pub.dev"
+ source: hosted
+ version: "1.1.1"
+ xml:
+ dependency: transitive
+ description:
+ name: xml
+ sha256: "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025"
+ url: "https://pub.dev"
+ source: hosted
+ version: "6.6.1"
sdks:
dart: ">=3.10.7 <4.0.0"
- flutter: ">=3.18.0-18.0.pre.54"
+ flutter: ">=3.38.0"
diff --git a/app/pubspec.yaml b/app/pubspec.yaml
index 6a2d791..0da71af 100644
--- a/app/pubspec.yaml
+++ b/app/pubspec.yaml
@@ -2,7 +2,7 @@ name: app
description: "A new Flutter project."
# The following line prevents the package from being accidentally published to
# 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
# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
@@ -34,6 +34,8 @@ dependencies:
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.8
+ flutter_svg: ^2.0.10
+ video_player: ^2.8.2
dev_dependencies:
flutter_test:
@@ -51,7 +53,21 @@ dev_dependencies:
# The following section is specific to Flutter packages.
flutter:
+ fonts:
+ - family: Ownglyph
+ fonts:
+ - asset: assets/fonts/Ownglyph.ttf
+ - family: SCDream
+ fonts:
+ - asset: assets/fonts/SCDream-bold.otf
+ weight: 700
+ - asset: assets/fonts/SCDream-medium.otf
+ weight: 500
+ assets:
+ - assets/img/
+ - assets/icons/
+ - assets/video/
# The following line ensures that the Material Icons font is
# included with your application, so that you can use the icons in
# the material Icons class.