Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ๋ฐฑ์ค
- ์ด์์ฒด์
- ZeroZone
- ์ ์ด์ฐํฉ
- GDSC Sookmyung
- CodeForces
- ์ด์์ง
- ํ๋ก์ธ์ค
- Dart ๋ฌธ๋ฒ
- 2024 ํ๋ฐ๊ธฐ
- dalgona
- formatTime
- People's Choice Award
- ํ๋ฌํฐ
- DART
- ALGOS
- ํ๋ก๊ทธ๋๋จธ์ค
- BOJ1260
- swift
- audioPlayer
- SMUPC
- C++
- Flutter
- ์๋ช ์ฌ์๋ํ๊ต
- Solution Challenge
- ICPC Sinchon
- ์ค๋ ๋
- 1260 c++
- ์๊ณ ๋ฆฌ์ฆ
Archives
- Today
- Total
Whaeun Story
[Flutter] ํ์ด์ง ์ด๋ ๋ณธ๋ฌธ
๐ ํ์ต ๋ชฉ๋ก ๐
- ํ์ด์ง ์ด๋
- Splash ํ๋ฉด ๊ตฌํ
๐ฉ๐ฝ๐ป ํ์ต ๋ด์ฉ
- ํ์ด์ง ์ด๋
- Navigator
: Stack์ ์ด์ฉํ์ฌ ํ์ ์์ ฏ(ํ๋ฉด) ์งํฉ์ ๊ด๋ฆฌํ๋ ์์ ฏ์ด๋ค. ๊ฐ์ฅ ์ต๊ทผ์ ๋ฐฉ๋ฌธํ ํ์ด์ง๊ฐ ์ด์ ํ์ด์ง ์์ ์๊ฐ์ ์ผ๋ก ์ค์ฒฉ๋์ด ๋ ผ๋ฆฌ ๊ธฐ๋ก์ ํ์ํ๊ธฐ ์ํด ์์ ฏ ๊ณ์ธต ๋งจ ์์ navigator๊ฐ ์์ด ์ด์ ํ์ด์ง๋ก์ ์ด๋์ ์๊ฐ์ ์ผ๋ก ๋ณผ ์ ์๋ค. - Navigator.push()
: push() ๋ฉ์๋๋ Route๋ฅผ Navigator์ ์ํด ๊ด๋ฆฌ๋๋ route ์คํ์ ์ถ๊ฐํ๋ค. - Navigator.pop()
: pop() ๋ฉ์๋๋ Navigator์ ์ํด ๊ด๋ฆฌ๋๋ route ์คํ์์ ํ์ฌ Route๋ฅผ ์ ๊ฑฐํ๋ค.
*์ฒซ ํ์ด์ง๋ฅผ ์ ์ธํ๊ณ ๋ appBar์ ๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ์ด ์๋์ ์ผ๋ก ์์ฑ๋๊ณ pop์ด ๋ค์ด๊ฐ๊ฑฐ๋ appBar๋ฅผ ๋ง๋ค์ง ์๊ฒ ๋๋ฉด ๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ์ด ์์ฑ๋์ง ์๋๋ค. - Navigator.pushNamedAndRemoveUntil(context, '/', (_) => false);
์ง๊ธ๊น์ง์ route์ ์์ธ ๋ชจ๋ ํ์ด์ง๋ฅผ ์ญ์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ ์ฌ์ฉํ๋ค. - ์ฌ์ฉ ์์
login.dart ์ผ๋ถ
//ํด๋น ๋ถ๋ถ์ ๋ก๊ทธ์ธ ๋ฒํผ์ ๋๋ ์ ๋ ๋์ํ๋ ํจ์๋ก ํด๋น ์
๋ ฅ ์์์ด ์ฌ๋ฐ๋ฅธ์ง ํ์ธํ๊ณ ์
๋ ฅ ์์์ด ์ฌ๋ฐ๋ฅผ ๊ฒฝ์ฐ, ๋ชจ๋๋ฅผ ์ ํํ ์ ์๋ ํ๋ฉด์ผ๋ก ์ ํํด ์ฃผ๋ ์ญํ ์ ํ๋ค.
void validateAndSave() {
final form = formKey.currentState;
if (form!.validate()) {
form.save();
print('Form is valid Email: $_email, password: $_password');
// ํ์ฌ ํ๋ฉด์ route ์คํ์์ popํ์ฌ ์ ๊ฑฐํ๋ค.
Navigator.pop(context);
// ๋ถ๋ฌ์ค๊ณ ์ถ์ ํ๋ฉด์ route ์คํ์์ pushํ์ฌ ์ถ๊ฐํ๋ค. ์ฌ๊ธฐ์์๋ selectModeMainPage๋ฅผ ์คํ์ ์ถ๊ฐํ๋ค.
Navigator.push(context, MaterialPageRoute(builder: (context) => selectModeMainPage()),);
//์ฌ๊ธฐ์๋ ๋ก๊ทธ์ธ์ด ์๋ฃ๋ ํ์๋ ๋ก๊ทธ์์์ ํ์ง ์๋ ์ด์ ๋ก๊ทธ์ธ ํ์ด์ง๋ก ๋์์ค์ง ์๋๋ก ์ค์ ํด์ผ ํ๋ฏ๋ก ํ์ฌ ํ์ด์ง๋ฅผ popํด์ค๋ค.
} else {
print('Form is invalid Email: $_email, password: $_password');
}
}
- Splash ํ๋ฉด ๊ตฌํ
- Splash Screen(Launch Screen): ์ฑ์ ๊ตฌ๋ํ ๋ ๋ณด์ฌ์ฃผ๋ ์์ํ๋ฉด์ ์ด์ผ๊ธฐํ๋ค.
- ๊ตฌํ ๋ฐฉ๋ฒ
1) pubspec.yaml์ ์ด๋ฏธ์ง๋ฅผ ์ ์ธํ๋ค.
- ํ๋ก์ ํธ์ ์ด๋ฏธ์ง๋ฅผ ๋ฃ์ ํด๋๋ฅผ ๋ง๋ค์ด ๋๊ณ splash ํ๋ฉด์ ์ฌ์ฉํ ์ด๋ฏธ์ง๋ฅผ ์ด๋ฏธ์ง ํด๋ ์์ ๋ฃ์ด ๋๋๋ค.
- ์ด๋ฏธ์ง๋ฅผ ์ ์ธํ ๋, ํด๋ ์ ์ฒด๋ฅผ ์ ์ธํ ์ ์์ผ๋ฉฐ ๊ทธ๋ด ๊ฒฝ์ฐ ํด๋น ํด๋ ์์ ์ํด ์๋ ์ด๋ฏธ์ง๋ค์ ์ ๋ถ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
- ์ ์ธ์ ์๋ฃํ ํ์๋ "Pub get"์ ํด์ฃผ๊ณ ์ด์ด์ "Pub Upgrade"๋ฅผ ํ๋ค.
2) main.dart ์ค์
- ์คํ๋์ ํ๋ฉด ์ดํ์ ๋์ค๊ฒ ํ ํ๋ฉด์ ๊ฒฝ๋ก๋ฅผ importํ๋ค.
- _SplashScreenState์์ timer๋ฅผ ์ค์ ํ๋ค. Duration()์ผ๋ก ์๊ฐ ์ค์ ์ด ๊ฐ๋ฅํ๋ค.
- initState์ build๋ฅผ ํตํด ํ์ด๋จธ ์์์ ์ค์ ํ๋ค.
- Widget build๋ก pubspec.yaml์์ ์ ์ธํด ๋์๋ ์ด๋ฏธ์ง ๊ฒฝ๋ก๋ฅผ ๊ฐ์ ธ์จ๋ค.
- ์ฌ์ฉ ์์
pubspec.yaml ์ผ๋ถ
flutter:
uses-material-design: true
assets:
- images/
main.dart
import 'dart:async';
import 'package:flutter/material.dart';
import 'Login/login.dart';
void main() {
runApp(new MaterialApp(
home: new SplashScreen(),
routes: <String, WidgetBuilder>{
// '/login'์ ๊ฒฝ์ฐ LoginPage์ ์ฐ๊ฒฐ๋๋๋ก ์ค์
'/login': (BuildContext context) => new LoginPage()
},
));
}
class SplashScreen extends StatefulWidget {
@override
_SplashScreenState createState() => new _SplashScreenState();
}
class _SplashScreenState extends State<SplashScreen> {
startTime() async {
// 2์ด๊ฐ ์ง๋๋ฉด navigationPageํจ์๊ฐ ์๋๋๋ค.
var _duration = new Duration(seconds: 2);
return new Timer(_duration, navigationPage);
}
void navigationPage() {
// ์์ ์ค์ ํด ์ค ๊ฒ์ ๋ฐํ์ผ๋ก LoginPage๋ก ์ด๋ํ ์ ์๊ฒ ๋จ.
Navigator.of(context).pushReplacementNamed('/login');
}
@override
void initState() {
// ์ฑ์ด ์์๋๋ฉด ์๊ฐ์ ์ฌ๊ธฐ ์์ํ๋ค.
super.initState();
startTime();
}
@override
Widget build(BuildContext context) {
return new Scaffold(
body: new Center(
// ์ฑ์ ๋ก๊ณ ๊ฐ ์คํ๋์ ํ๋ฉด์ผ๋ก ๋จ๊ฒ ๋๋ค.
child: new Image.asset('images/zerozonelogo.png'),
),
);
}
}
Trouble Shooting ๐ฅ
๐ฅ- "unable to load asset"์๋ฌ
์๋ฎฌ๋ ์ดํฐ๋ ์ ์์ ์ผ๋ก ์คํ์ด ๋์์ง๋ง ์คํ๋์ํ๋ฉด์ ๋ํ๋๋๋ก ์ค์ ํ๋ ์ด๋ฏธ์ง๊ฐ ๋ํ๋์ง ์๊ณ unable to load asset์ด๋ผ๋ ๋ฉ์์ง๊ฐ ๋ํ๋ฌ๋ค.
=> ํด๊ฒฐ๋ฐฉ๋ฒ:
1) images ํด๋์ ์์น ์ค๋ฅ - lib ํด๋ ๋ฐ์ ์์น ์ํจ๋ค.
2) pubspec.yaml ํ์ผ์์ ๋์ด์ฐ๊ธฐ ๊ตฌ๋ถ์ ํด์ฃผ์ด์ผ ํ๋ค.
assets ์ ์ ๋์ด์ฐ๊ธฐ 2๋ฒ ํน์ ํญ 1๋ฒ, ์ดํ - ์ด๋ฏธ์ง ๊ฒฝ๋ก ์ ์ ๋์ด์ฐ๊ธฐ 4๋ฒ ํน์ ํญ 2๋ฒ์ ํด์ผ ํ๋ค.
์ฐธ๊ณ ์๋ฃ
๐'๊ณต๋ถ > flutter' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
HTTP ํต์ (0) | 2022.12.18 |
---|---|
Advanced UI & Animations (0) | 2022.12.17 |
dart ์ธ์ด ํ์ต [2] (0) | 2022.11.28 |
dart ์ธ์ด ํ์ต [1] (0) | 2022.11.28 |
[Flutter] Flutter ์์ (2) | 2022.01.23 |