์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- XCTest
- ํจ์คํธ์บ ํผ์ค
- UIKit
- BOJ
- ํ๋ก๊ทธ๋๋จธ์ค
- Xcode
- Lv2
- SwiftUI
- BFS
- Flutter
- Swfit
- TCA
- visionOS
- node.js
- arkit
- designpattern
- swift
- ๋ฐฑ์ค
- ios
- reactorkit
- raywenderlich
- tableView
- realm
- SnapKit
- rxcocoa
- combine
- RxSwift
- CollectionView
- Kuring
- MVVM
- Today
- Total
๋ชฉ๋กFlutter (21)
lgvv98
โ ๋ ์จ์ฑ ๋ง๋ค๊ธฐ ์ด๋ฒ ํฌ์คํ ์์๋ ์ ๋ถ ๋ค ๊ฐ์๋ฅผ ๋ฃ์ง ์๊ณ ์ค๊ฐ์ ์ฐ์ ์คํํ๊ธฐ๋ก! โ my_location.dart import 'package:geolocator/geolocator.dart'; class MyLocation { double latitude2; double longitude2; Future getMyCurrentLocation() async{ try { Position position = await Geolocator.getCurrentPosition( // ์์น์ ๊ฒฝ๋ ๊ฐ์ ธ์จ๋ค. desiredAccuracy: LocationAccuracy.high); latitude2 = position.latitude; longitude2 = position.longitude; print(po..
โ ์ด๋ฒ ์๊ฐ์๋ Future-async์ ๋ํด์ ์์๋ณผ ์์ ์ด์ผ. ์ค๊ฐ์ ์๋ต๋ ๊ฒ์ for๋ฌธ๊ณผ while๋ฌธ์ด๋ผ์ ๋ฐ์ด๋์์. โ Dart์์ Thread๋? ๋คํธ๋ ์ฑ๊ธ ์ฐ๋ ๋๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. Event loop๊ฐ ์กด์ฌํด์ ์ฒ๋ฆฌํด. ์๋๋ก์ด๋ ์น๋ฉด Looper์ ๊ฐ์ ๊ฐ๋ . โ Future๋? 1. ๋คํธ์ ์ํด future ๊ฐ์ฒด๊ฐ ๋ด๋ถ์ ์ธ ๋ฐฐ์ด์ ๋ฑ๋ก 2. future๊ด๋ จํด์ ์คํ๋์ด์ผ ํ๋ ์ฝ๋๋ค์ด ์ด๋ฒคํธ ํ์ ๋ฑ๋ก 3. ๋ถ์์ ํ future๊ฐ์ฒด๊ฐ ๋ฐํ 4. Syncronous ๋ฐฉ์์ผ๋ก ์คํ๋์ด์ผ ํ ์ฝ๋ ๋จผ์ ์คํ 5. ์ต์ข ์ ์ผ๋ก ์ค์ ์ ์ธ data๊ฐ์ด future๋ก ์ ๋ฌ โ Async method 1. ๋ฉ์๋๋ฅผ ํตํด ๋์ค๋ ๊ฒฐ๊ณผ๋ฌผ์ future 2. Await ํค์๋๋ฅผ ๋ง๋ ๋๊น์ง synchro..
โ ์ด๋ฒ ์๊ฐ์๋ Future, async, await์ ๋ํด์ ์์๋ณด์. ํ๋ฌํฐ๋ฅผ ๊ณต๋ถํ๋ฉด์ ๋๋๊ฒ์ด ์ ๋ฐ์ ์ผ๋ก RxSwift์ ๋น์ทํ ๋๋์ ๊ฐ๋๋ค๋ ๊ฒ์ด๋ค. ๊ทธ๋ผ ํ๋ฒ ๋ค์ ๋ณด๋๋ก ํ ๊น? ์ฝ๋ ์์ฑ์ ํ๋ฌํฐ ํ๋ก์ ํธ์ - test - widget_test.dart์ ์์ฑํ๋ค. โ ๊ฐ์ฅ ๊ธฐ์ค์ด ๋๋ ์ฝ๋ import 'dart:io'; void main() { showData(); } void showData() { startTask(); accessData(); fetchData(); } void startTask() { String info1 = '์์ฒญ ์ํ ์์'; print(info1); } void accessData() { String info2 = '๋ฐ์ดํฐ์ ์ ์์ค'; print(info2)..
โ ์ด๋ฒ ์๊ฐ์๋ ๋ก๊ทธ์ธ๊ณผ ์ฃผ์ฌ์ ์ฑ ๋ง๋ค๊ธฐ์ ๋ํด์ ์์๋ณผ ์์ ์ด์ผ. ๋ญ๊ฐ ์๊ฐ๋ณด๋ค ์๋ก์ด ๋ณด๋ ๊ฒ๋ค์ด ๋ง์๊ณ , ๋์์ธ ํจํด์ด๋ ํด๋ฆฐ ์ฝ๋์ ๋ํด์ ํ๋ฌํฐ๋ ์๋นํ ์ค์ํ ๊ฒ ๊ฐ๋ค๋ ์๊ฐ์ด ํ ๋ค์์ด. ์ฝ๋๋ฅผ ๋ณด๋ฉด์ ๊ทธ๋ผ ํจ๊ป ๋ณด๋๋ก ํ์. ํ๋ฌํฐ ๊ฐ๋ฐ์ ์์ด์, ์ฝ๋๋ฅผ ์ญ ์ฝ์ด๋ณด๋ฉด์ ์ง๋๊ฐ์ โ ํ๋ฌํฐ ํ๋ฉด ์ค ์ผ๋ถ โ main.dart // main.dart import 'package:flutter/material.dart'; import 'dice.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp(..
โ ์ด๋ฒ ์๊ฐ์๋ ๋ฐฐ์ด๊ฒ ๋ง์ ์๊ฐ์ด์๋ค. ํนํ๋ ์คํ๋ก ์ฌ๋์๋ ์ญ์ฌ๋์ ์คํ๋ก ์ธํด์ ํ์ฐธ์ ํค๋งค์๋๋ฐ ์ฐฌ์ฐฌํ ์ดํด๋ณด๋๋ก ํ์. ๋ํ ํ์ผ์ ๋๋์ด ๋๋์ด์ ์์ ํ๋๋ฐ ์ด ๋ถ๋ถ๋ ๋์ฌ๊ฒจ๋ณผ ๋ถ๋ถ์ด๋ค. ํ์ผ์ ๋๋๋ฉด import๋ฅผ ๋๋ค์ ํด์ฃผ์ด์ผํ๋ค. ๐ก ์๊ฐํ ์ import๊ฐ ๋๋ฌด ๋ง์ผ๋ฉด ๊ด๋ฆฌ๊ฐ ๋ถํธํ๋๊น ํค๋ํ์ผ ์ฒ๋ผ ๋ชจ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋์ง ์์๋ณด๊ธฐ โ ์ฝ๋ ๋ฆฌ๋ทฐ - main.dart // main.dart import 'package:flutter/material.dart'; // ๋ฐ์คํฌํ, ์ฑ ๋ฑ์ ๊ณ ๋ฃจ UI๋ฅผ ์ ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๊ตฌ๊ธ์ด ์ ๊ณตํด์ฃผ๋ ํจํค import 'package:untitled/ScreenA.dart'; import 'ScreenB.dart'; import 'Scre..
โ ์ด๋ฒ์๊ฐ์๋ ๋ค๋น๊ฒ์ดํฐ๋ฅผ ์ด์ฉํด ํ๋ฉด ์ ํํ๊ธฐ + ์ปจํ ์คํธ์ ๋ํด์ ์์๋ณผ ์์ ์ด์ผ โ Navigator ๋ฐ ํฌ์คํ ์ ์์ 1. Route์ ๊ฐ๋ - ์ค๋งํธํฐ์์ ๋ณด์ฌ์ง๋ ํ๋์ ํ์ด์ง ํ๋ฉด ! 2. Navigator์ ์ ์์ push, pop ํจ์, stack ์๋ฃ๊ตฌ์กฐ - stack ( FILO ) - push ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ธฐ - pop ๋ฐ์ดํฐ๋ฅผ ๋นผ๊ธฐ - Route(ํ์ด์ง) ๋ Navigator๋ผ๋ ์์ ฏ์ด ๋ด๋นํ๊ณ ๊ทธ ๊ตฌ์กฐ๋ ์คํ ๊ตฌ์กฐ์ด๋ค. 3. MaterialPageRoute์์ ฏ๊ณผ context - ํ๋ฉด์ ํํ ๋, ๋ฐ๋ก class ์ ๋ ฅํด์ ์ด๋ํ๋ ๊ฒ์ด ์๋๋ผ ํ๋ฉด์ ์ง์ ํด์ฃผ๋ฉด์ ์ด๋ํ๋ค. 4. ํ์ด์ง ์ด๋ ๊ธฐ๋ฅ ๊ตฌํ ์์ฑ โ ์ฝ๋ ๋ฆฌ๋ทฐ import 'package:flutter/material.d..