๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

FLUTTER

(5)
[Flutter/Firebase] Firebase auth / account-exists-with-different-credential Flutter ์•ฑ์—์„œ Firebase์˜ Athenticatoin ์„ ํ†ตํ•ด ๋กœ๊ทธ์ธ์„ ๊ตฌํ˜„ํ–ˆ๋‹ค. ( Google / Apple / Twitter ) ๊ทธ๋Ÿฐ๋ฐ, ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. [VERBOSE-2:ui_dart_state.cc(199)] Unhandled Exception: [firebase_auth/account-exists-with-different-credential] An account already exists with the same email address but different sign-in credentials. Sign in using a provider associated with this email address. ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์ƒํ™ฉ์€ 1. Apple๋กœ ๋กœ๊ทธ์ธ 2. ๋กœ๊ทธ์•„์›ƒ..
[ Flutter / State ] Flutter์˜ ์ƒํƒœ๊ด€๋ฆฌ ํ›‘์–ด๋ณด๊ธฐ. * Flutter ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์˜ State management ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด์„ & ์ •๋ฆฌ ํ•œ ๊ธ€. Flutter UI์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ๋‹ค๋ฅธ UI ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ นํ˜• ๋ฐฉ์‹๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ์„ ์–ธํ˜• UI๋ผ๋Š” ์ ์ด๋‹ค. ๋ช…๋ นํ˜• ๋ฐฉ์‹์˜ UI ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ UI๊ฐœ์ฒด๋ฅผ ์ผ์ผ์ด ๊ตฌ์„ฑํ•˜๊ณ , ๋‚˜์ค‘์— UI๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๋ฉ”์„œ๋“œ์™€ setter๋“ค์„ ์ด์šฉํ•˜์—ฌ ๋ณ€๊ฒฝํ•˜๋Š” ์šฐ๋ฆฌ์—๊ฒŒ ์ต์ˆ™ํ•œ ๋ฐฉ์‹์ด๋‹ค. ์ด์™€ ๋ฐ˜๋Œ€๋กœ Flutter๋Š” ํ˜„์žฌ์˜ UI ์ƒํƒœ๋งŒ ๋ฌ˜์‚ฌํ•˜๊ณ , ๋ณ€ํ™”๋Š” ํ”„๋ ˆ์ž„์›Œํฌ์— ๋งก๊ธฐ๋„๋ก ํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ Flutter์—์„œ UI๋ฅผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฃจ๋Š”์ง€์— ๋Œ€ํ•ด ์‚ฌ๊ณ  ์ „ํ™˜์ด ํ•„์š”ํ•˜๋‹ค. Flutter์˜ ์ƒํƒœ ์†Œ๊ฐœ. - ์ˆ˜๋ช…์ด ์งง์€ ์ƒํƒœ ( Ephemeral State ) - ์•ฑ ์ƒํƒœ ( App State ) 1. ์ˆ˜๋ช…์ด ์งง์€ ์ƒํƒœ ( Ephemeral..
[ Flutter ] ๊ธธ์ด์— ๋”ฐ๋ผ Text ์ž๋™ ์ค„๋ฐ”๊ฟˆ / Flexible Text Flutter์—์„œ ์ž‘์—…์ค‘ Text๋ฅผ ๋‚ด๊ฐ€ ์ •ํ•œ Width ๊ธธ์ด ๋ฐ ์ค„์„ ์„ค์ •ํ•˜์—ฌ ๊ทธ ์ดํ›„์˜ ํ…์ŠคํŠธ๋“ค์€ ๋ณด์ด์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๋ฐฉ๋ฒ•.๐Ÿฅณ ๋‚˜๋Š” ์ƒ์„ธ ํŽ˜์ด์ง€ ์ด์ „์— ๋ฏธ๋ฆฌ๋ณด๊ธฐ ํŽ˜์ด์ง€์—์„œ ํ…์ŠคํŠธ๊ฐ€ ๋„ˆ๋ฌด ๊ธธ์–ด์งˆ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜์—ฌ ์‚ฌ์šฉํ–ˆ๋‹ค๐Ÿ˜„ !! ์œ„์™€๊ฐ™์ด Container์— width๋ฅผ ์ •ํ•ด์ฃผ๊ณ , maxLines๋ฅผ ์ •ํ•˜๋ฉด, ๋‚ด๊ฐ€ ์ •ํ•ด๋†“์€ ๊ฐ’์„ ๋„˜๊ธฐ์ง€ ์•Š๋Š”๋‹ค. ์•„์ฃผ ๊ต‰์žฅํžˆ ์œ ์šฉ์“ฐ ํ•˜๋‹ค.๐Ÿ‘ * 10000 Container( width: 150, child: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ Flexible( child: RichText( overflow: TextOverflow.ellipsis, maxLines: 5, strutStyle: StrutSt..
[ Flutter / ์• ํ”Œ ๋กœ๊ทธ์ธ ] Firebase๋ฅผ ์ด์šฉํ•œ SignIn With Apple ๊ตฌํ˜„ Flutter ์†Œ์…œ ๋กœ๊ทธ์ธ์„ ๊ฐœ๋ฐœ์ค‘์ธ๋ฐ, ๋“ฃ๊ธฐ๋ก  ( WEB / Android / ios 13๋ฒ„์ „ ์ดํ•˜ ์ง€์›์˜ ๊ฒฝ์šฐ )Apple ๋กœ๊ทธ์ธ์ด ๋‚œ์ด๋„ ํ—ฌ์ด๋ผ๋Š” ์ด์•ผ๊ธฐ๋ฅผ ๋“ค์—ˆ๋‹ค..๐Ÿ˜ฑ ํ•˜์ง€๋งŒ ๋‚˜๋Š” ios 13 ์ด์ƒ ์ง€์›์— ios Apple ๋กœ๊ทธ์ธ๋งŒ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ต‰์žฅํžˆ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค!๐Ÿ˜ ์ด์ œ ์ฐจ๊ทผ ์ฐจ๊ทผ ์• ํ”Œ ๋กœ๊ทธ์ธ์— ๋Œ€ํ•ด ๋ฟŒ์…”๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค..! ๐Ÿ”ฅ ์ค€๋น„ํ•˜๊ธฐ ๐Ÿ˜™ ios 13.0 ์ด์ƒ์˜ ์• ํ”Œ ๋กœ๊ทธ์ธ๋งŒ ์ง€์›ํ•  ๊ฒฝ์šฐ - Firebase์— ios ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋ผ ์žˆ์–ด์•ผ ํ•œ๋‹ค. - ์• ํ”Œ ๊ฐœ๋ฐœ์ž ํ”„๋กœ๊ทธ๋žจ์— ์œ ๋ฃŒ ํšŒ์›์œผ๋กœ ๊ฐ€์ž…๋ผ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๐Ÿ˜จ ios 13.0 ์ดํ•˜ ๋ฒ„์ „ ๋ฐ web, Android ์• ํ”Œ ๋กœ๊ทธ์ธ์„ ์ง€์› ํ•  ๊ฒฝ์šฐ - Firebase์— ios ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ๋ผ ์žˆ์–ด์•ผ ํ•œ๋‹ค. - ์• ํ”Œ ๊ฐœ๋ฐœ์ž ํ”„๋กœ๊ทธ๋žจ์—..
[ Flutter ]flutter์—์„œ setTimeout๊ณผ ๊ฐ™์€ ํƒ€์ด๋จธ ์„ค์ •ํ•˜๊ธฐ. web API ์ค‘ ํ•˜๋‚˜์ธ setTimeout() method ์™€ ๊ฐ™์€ ์—ญํ• ์„ ํ•˜๋Š” dart์˜ method๋Š” ๋ฌด์—‡์ผ๊นŒ? ๐Ÿค” ๋‚˜๋Š” Flutter ๊ณต์‹ ํŽ˜์ด์ง€์— ๋‚˜์™€์žˆ๋Š” dart:async > Timer class ๋ฅผ ์ด์šฉํ–ˆ๋‹ค. Timer Class๋Š” Null safety๊ฐ€ ์ง€์›๋˜๋Š” ์ถ”์ƒ ํด๋ž˜์Šค ์ด๋‹ค. ๊ณต์‹ํŽ˜์ด์ง€์— ์žˆ๋Š” ๊ธ€์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑํ•œ ๋‚˜์˜ ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ. Timer(Duration(seconds: 3), () { Get.to(AddressListPage()); }); ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” 3์ดˆ ํ›„ GetX ์˜ Get.to()๋ฅผ ์ด์šฉํ•˜์—ฌ AddressListPage๋กœ ์ด๋™ํ•œ๋‹ค. ๐Ÿฅณ ๐Ÿ‘‰ ๋ฐ˜๋ณต ์•ก์…˜์„ ์ฃผ๋ ค๋ฉด Timer.periodic ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ์ฐธ๊ณ ๊ธ€: https://fluttermaster.com/t..