๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

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

    ์•„ํ‚คํ…์ณ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ์™€ 4๊ฐ€์ง€์˜ ํšจ๊ณผ (๋” ๋งŽ์ง€๋งŒ ๊ฐ„๋žตํ•˜๊ฒŒ)

    ๋‚˜๋„ ์˜ˆ์ „์—๋Š” ์ •๋ง ์•„๋ฌด๋ ‡๊ฒŒ๋‚˜ ๊ฐœ๋ฐœ์„ ํ–ˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด๊ฐ€ ๋‹ค๋‹ˆ๋˜ ํ•™๊ต์—๋Š” ํ›Œ๋ฅญํ•œ ์„ ๋ฐฐ๋“ค์ด ๋งŽ์ด ๊ณ„์…จ๊ณ . ๊ทธ ๋ถ„๋“ค์„ ํ†ตํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์ž˜์งœ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํŠนํžˆ ์•„ํ‚คํ…์ฒ˜๋Š” ๋‚˜์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ฐ”๊พธ์–ด ๋†“์•˜๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๋” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋‹จ์ˆœํžˆ ๋™์ž‘์— ์ง‘์ค‘ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด์„œ ์ตํ˜”์œผ๋ฉด ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์•„ํ‚คํ…์ฒ˜๋Š” ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ ์ „๊นŒ์ง€๋Š” ๊ทธ ์ง„์ž…์žฅ๋ฒฝ์ด ๋†’์•„ ๊ณต๋ถ€ํ•˜๊ธฐ ์–ด๋ ค์šฐ๋ฉฐ ๊ทธ ์ค‘์š”์„ฑ์ด ํฌ๊ฒŒ ์™€๋‹ฟ์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ด ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์ด๋ฒˆ ๊ธ€์„ ํ†ตํ•ด ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด ์ตœ๋Œ€ํ•œ ์™€๋‹ฟ์„ ์ˆ˜ ์žˆ๊ฒŒ ์•„ํ‚คํ…์ฒ˜์˜ ํšจ๊ณผ์— ๋Œ€ํ•ด์„œ ์จ๋ณด๊ณ ์ž ํ•œ๋‹ค. ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•œ ์˜ˆ์‹œ ๋งŒ์•ฝ ๊ทœ๋ชจ๊ฐ€ ์ข€ ์žˆ๋Š” ์ผ์„ ํ•ด๋ณธ๋‹ค๊ณ  ํ•˜์ž. ๋‹น์‹  ํ˜ผ์ž์„œ ์ด ์ผ์„ ์ „๋ถ€ ๋งˆ๋ฌด๋ฆฌ ํ•  ์ˆ˜ ์—†๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ๋‹น์‹ ์€ ์กฐ์ง์„ ๊ตฌ์„ฑํ•ด์„œ ์ด ์ผ์„ ..

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