Flutter

    Flutter / multi_image_picker Asset์„ Image๋กœ ๋ณด์ด๊ฒŒ ํ•˜๊ธฐ

    Flutter์—์„œ ์‚ฌ์ง„์„ ๋‹ค๋ฃฐ๋•Œ ๋ณดํ†ต image_picker, multi_image_picker๋ฅผ ๋งŽ์ด ํ™œ์šฉํ•˜์‹ค ํ…๋ฐ์š”. image_picker๋Š” ๊ทธ๋ƒฅ File์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‰ฝ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ multi_image_picker๋Š” Asset์œผ๋กœ ๋ฐ˜ํ™˜ํ•ด์„œ ๋‹ค๋ฃจ๊ธฐ ๊นŒ๋‹ค๋กœ์šด ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ Asset์„ ์ด๋ฏธ์ง€๋กœ ๋ณด์—ฌ์ค˜์•ผ ํ• ๋•Œ AssetThumb๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‚ฌ์ง„์ด ๊นจ์ ธ์„œ ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— ๊ณค๋ž€ํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿด๋•Œ Image.memory()๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ€„๋ฆฌํ‹ฐ ๋†’์€ ์‚ฌ์ง„์„ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ๋งํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. 1. initState์—์„œ Asset.file.getByteData(quality : x)๋ฅผ await์œผ๋กœ ํ˜ธ์ถœํ•ด์„œ ByteData๋ฅผ ์ €์žฅํ•œ๋‹ค. 2. setSta..

    Flutter/ popUntil ์„ ํ• ๋•Œ ๊ฒ€์€ํ™”๋ฉด์ด ๋œฌ๋‹ค๋ฉด?

    ์ด๋ฒˆ๊ธ€์€ ๊ต‰์žฅํžˆ ์งง๊ณ  ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒ๋ฉด ์ œ๊ฐ€ ํ•œ ๋ฉ์ฒญํ•œ ์‹ค์ˆ˜๋ฅผ ์ ๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. popUntil์„ ํ• ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ ์„ค์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋กœ routeSettings ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ModalRoute.withName()์„ ์•”๋งŒ ๋„ฃ์–ด๋„ ๊ฒ€์€ํ™”๋ฉด์ด ๋œน๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ์ƒ๊ฐํ•˜๋ฉด ํ•ด๋‹น ์ด๋ฆ„์ด ํ•ฉ๊ฒฉ๋ช…๋‹จ์— ์—†๋Š”๋ฐ ์žˆ๋‹ค๊ณ  ๋ฐ•๋ฐ• ์šฐ๊ธฐ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์‹œ์ฝ”๋“œ๋ฅผ ๋ณด์‹œ๋ฉด ์ดํ•ด๊ฐ€ ์‰ฌ์šฐ์‹ค ๊ฒƒ ์ž…๋‹ˆ๋‹ค. // popUntil์ด ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ class MyRouter { static Route generateRoute(RouteSettings settings) { switch (settings.name) { case "SPLASH_SCREEN": return MaterialPageRoute( ..

    Flutter Provider + '?' ํŒจํ„ด  (feat. ChangeNotifier, Mobx, BLoC, etc..)

    Flutter Provider + '?' ํŒจํ„ด (feat. ChangeNotifier, Mobx, BLoC, etc..)

    Flutter๋ฅผ ํ•˜๋ฉด ํ•ญ์ƒ ๋˜์ง€๊ฒŒ ๋˜๋Š” ์งˆ๋ฌธ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ์ƒํƒœ๊ด€๋ฆฌ ํŒจํ„ด์„ ๊ตฌ์ถ•ํ• ์ง€์— ๋Œ€ํ•œ ๋‹ต์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์•„๋ž˜๊ฐ€ ๊ทธ์— ๋Œ€ํ•œ ๋Œ€๋‹ต์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ๊ตฌ๊ธ€์€ ๋งค I/O ๋•Œ๋งˆ๋‹ค ์ƒํƒœ๊ด€๋ฆฌ ํŒจํ„ด์— ๋Œ€ํ•ด์„œ ์†Œ๊ฐœํ•ด์™”์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๊ฐ ๋…„๋„๋ณ„ ์†Œ๊ฐœ๋œ ํŒจํ„ด์ž…๋‹ˆ๋‹ค. 2018 2018 Google I/O (ScopedModel, BLoC) 2019 2019 Google I/O (Provider+ChangeNotifier) 2019 I/O. Provider+ChangeNotifier๊ฐ€ ์˜ˆ์‹œ๋กœ ์†Œ๊ฐœ๋์Šต๋‹ˆ๋‹ค. ์–ธ๋œป ๋ณด๋ฉด ์ด ์ž์ฒด๋กœ ProviderํŒจํ„ด์˜ ์™„์„ฑ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ„๊ณผํ•˜๊ณ  ์žˆ๋Š”๊ฒŒ ์žˆ์Šต๋‹ˆ๋‹ค. Provider๋Š” ํŒจํ„ด์ด ์•„๋‹ˆ๋ผ ํŒจํ‚ค์ง€์ž…๋‹ˆ๋‹ค. Provider+ChangeNotifier๊ฐ€ ํŒจํ„ด์ด์ง€ Provider๋Š” I..

    Flutter / 4ํƒ„ : Flutter์˜ ์ƒํƒœ๊ด€๋ฆฌ

    Flutter / 4ํƒ„ : Flutter์˜ ์ƒํƒœ๊ด€๋ฆฌ

    ํด๋ผ์ด์–ธํŠธ ๊ฐœ๋ฐœ์„ ํ•œ ๋‹จ์–ด๋กœ ํ‘œํ˜„ํ•˜์ž๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค “์ƒํƒœ ๊ด€๋ฆฌ”. ์˜ค๋Š˜์€ Flutter๊ฐ€ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ํ•˜๋Š” ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๋‚ด์šฉ์€ Flutter์˜ UI ์ž‘๋™๋ฐฉ์‹์— ๋Œ€ํ•ด์„œ ์ž˜๋ชจ๋ฅด์‹œ๋ฉด ์ดํ•ด๊ฐ€ ์–ด๋ ค์šฐ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ž˜ ๋ชจ๋ฅด์‹ ๋‹ค๋ฉด ๋จผ์ € Flutter UI ์ž‘๋™๋ฐฉ์‹์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด์ฃผ์„ธ์š” Flutter / 3ํƒ„ : Flutter์˜ UI์— ๊ด€ํ•˜์—ฌ Flutter / 3ํƒ„ : Flutter์˜ UI์— ๊ด€ํ•˜์—ฌ ์ด๋ฒˆ์—๋Š” Flutter์˜ UI์— ๊ด€ํ•˜์—ฌ ๊ณต๋ถ€๋ฅผ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ Flutter๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์ž˜ ๋ชจ๋ฅด์‹œ๋Š” ๋ถ„๋“ค์€ ์•„๋ž˜์˜ ๊ธ€์„ ๋จผ์ € ์ฝ๊ณ  ์™€์ฃผ์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. https://medium.com/@joooosan011/flutter-2%ED%83%84-flutter-%ED%8.. joooosa..