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.