flutter

    Flutter Null Safety๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ 

    Flutter Null Safety๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ด์œ 

    Flutter 2.0 ์ถœ์‹œ ์ดํ›„ null safety ๊ฐ€ ์ •์‹ ๋ฐฐํฌ๊ฐ€ ๋์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๊ทธ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์€ ์•„๋ž˜์˜ ์ž๋ฃŒ๋“ค์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑ๋์Šต๋‹ˆ๋‹ค. Why null safety (youtube) Null safety (flutter official docs) ์ด ๊ธ€์—์„œ ์•Œ์•„๋ณผ ๋‚ด์šฉ Null safety ๋ž€ ๋ฌด์—‡์ธ๊ฐ€? Null safety ๊ทœ์น™ Null safety ๋ž€ ๋ฌด์—‡์ธ๊ฐ€? NullException ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๊ฐ€์žฅ ์‹ซ์–ดํ•˜๋Š” Exception ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์˜ ํ•œ ๊ตฌ๊ฐ„์ด Null ์ธ ๊ฒฝ์šฐ ๋ฐœ์ƒ๋˜๋Š”๋ฐ์š”. ํ”„๋กœ๊ทธ๋žจ์˜ ๊ทœ๋ชจ๊ฐ€ ํฌ๋ฉด ํด์ˆ˜๋ก, ๊ทธ๋ฆฌ๊ณ  ๋ณต์žกํ•˜๋ฉด ๋ณต์žกํ•  ์ˆ˜๋ก null ์„ ์ฐพ๊ธฐ๋Š” ์ƒ๋‹นํžˆ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ null์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์žˆ์–ด์„œ ์œ ์šฉํ•˜์ง€๋งŒ..

    Flutter์—์„œ Webview(์›น๋ทฐ) ์‚ฌ์šฉํ•˜๊ธฐ

    Flutter์—์„œ Webview๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๊ด€ํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ด ๊ธ€์€ ๋‹จ์ˆœํ•œ webview ๊ตฌํ˜„์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. hybrid composition์˜ ๋‚ด์šฉ์„ ๋‹ด์ง€ ์•Š์•˜์Œ์„ ๋ฏธ๋ฆฌ ์•Œ๋ ค๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด ๊ธ€์€ ์•„๋ž˜์˜ example๊ณผ ๋ฌธ์„œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. webview_flutter example webview_flutter api document ์ด ๊ธ€์—์„œ ์•Œ์•„๋ณผ ๋‚ด์šฉ Webview ์‚ฌ์šฉ๋ฒ• (webview_flutter) http ์—ฐ๊ฒฐ ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ Webview ์‚ฌ์šฉ๋ฒ• (webview_flutter) pubspec.yaml ์˜์กด์„ฑ ์ถ”๊ฐ€ dependencies: flutter: sdk: flutter webview_flutter: ^2.0.9 // ์ตœ์‹ ๋ฒ„์ „ ๊ถŒ์žฅ (https://pub.dev/p..

    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( ..