1์ธ ๊ฐ๋ฐ์๋ก ํ๋ํ๊ณ ์๋ DevStory์ ๋๋ค.
๐ฑํ๋ก์ ํธ ๋ณด๋ฌ๊ฐ๊ธฐ
โ๏ธ ๋ธ๋ก๊ทธ ๋ณด๋ฌ๊ฐ๊ธฐ
๐ชด GitHub ๋ณด๋ฌ๊ฐ๊ธฐ
Courses
Reviews
- Basics of Flutter App Development
- Basics of Flutter App Development
- Basics of Flutter App Development
- Basics of Flutter App Development
- Basics of Flutter App Development
Posts
Q&A
vs code ์๋ ํฌ๋งทํ
์๋ ํ์ธ์.Dart 3.7.0 ๋ฒ์ ๋ถํฐ Dart Format ๊ท์น์ด ๋ณ๊ฒฝ๋์ด ํ ์ค์ 80๊ธ์๊ฐ ๋์ง ์์ผ๋ฉด ์ฝค๋ง(,)๋ฅผ ์ญ์ ํ๊ณ ํ ์ค๋ก ๋ณ๊ฒฝ๋ฉ๋๋ค. (ํํ ์ผํ ๊ด๋ จ ์ด์)๊ฐ์ ์๋ฃ๋ Dart 3.6.0 ๊ธฐ์ค์ผ๋ก ๊ตฌํ๋์ด ์์ผ๋ฉฐ, ๊ฐ์ ์๋ฃ์ ๋์ผํ๊ฒ ์๊ฐํ๊ณ ์ถ์ผ์ ๊ฒฝ์ฐ pubspec.yaml ํ์ผ์์ environment์ sdk ๋ฒ์ ์ ์๋์ ๊ฐ์ด ๋ณ๊ฒฝํ์๋ฉด ๋ฉ๋๋ค.environment: # before # sdk: ^3.7.0 # after sdk: '>=3.1.3 ์ด ๋ด์ฉ์ ๊ฐ์์๋ฃ 1ํ์ฐจ > 04. ๋ก๊ทธ์ธ ํ์ด์ง ๋ง๋ค๊ธฐ > 1) Scaffold & Text ํํธ์ ์์ฑ๋์ด ์์ผ๋ ์ฐธ๊ณ ํด ์ฃผ์ธ์ ๐์คํ ์นด์นด์คํก์ ์ฌ๊ธฐ๋ก ๋ฌธ์์ฃผ์๋ฉด ๋ฉ๋๋ค.๊ฐ์ฌํฉ๋๋ค.
- 1
- 2
- 29
Q&A
๋์์ธ ์์คํ ๊ตฌ์ฑ์ ๋ํด ์ง๋ฌธ ๋๋ฆฝ๋๋ค
์๋ ํ์ธ์ Ben Kim๋Flutter์์ ๊ธฐ๊ธฐ์ ํ์ ์ํ๋ MediaQuery.of(context).orientation ์ฝ๋๋ฅผ ์ด์ฉํ์ฌ ํ์ธํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ด์ฉํ์ฌ ๋ค์ํ๊ฒ ๊ตฌํ ํ์ค ์ ์๋๋ฐ, ํ ๊ฐ์ง ์์๋ก ๊ฐ์์์ ์ฌ์ฉํ context.layout() ํจ์์ Orientation ๋งค๊ฐ๋ณ์๋ฅผ ์ถ๊ฐํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.import 'package:flutter/material.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, home: Scaffold( appBar: AppBar(), body: context.layout( (orientation) => Text("Default $orientation"), mobile: (orientation) => Text("Mobile : $orientation"), desktop: (orientation) => Text("Desktop : $orientation"), tablet: (orientation) => Text("Tablet : $orientation"), ), ), ); } } abstract class Breakpoints { /// Device max width static const double mobile = 600; static const double tablet = 1000; static const double desktop = 1190; /// BottomSheet max width static const double bottomSheet = 600; } extension LayoutExt on BuildContext { /// Screen size Size get screenSize => MediaQuery.of(this).size; Orientation get orientation => MediaQuery.of(this).orientation; /// Responsive layout T layout( T Function(Orientation orientation) base, { T Function(Orientation orientation)? mobile, T Function(Orientation orientation)? tablet, T Function(Orientation orientation)? desktop, }) { if (screenSize.width ๊ฐ์์์ ๋ค๋ฃฌ ๊ฒ๊ณผ ๊ฐ์ด UI ๊ธฐํ์ ๊ฐ๋ก ๋ชจ๋์ ์๋ก ๋ชจ๋์ ์ฐจ์ด๊ฐ ์ด๋ ์ ๋์ธ์ง์ ๋ฐ๋ผ ์์ ฏ์ ๋ถ๋ฆฌํ๋ ๊ธฐ์ค์ด ๋ฌ๋ผ์ง ์ ์์ผ๋ฉฐ, ํ ํ์ผ์ ๋ชจ๋ ๊ตฌํํ๊ธฐ ๋ณด๋จ ์ ์ง๋ณด์๋ฅผ ์ํด ๋ณ๋ ์์ ฏ์ผ๋ก ๋๋๋ ๊ฒ์ ๊ถ์ฅ๋๋ฆฝ๋๋ค.๊ฐ์ฌํฉ๋๋ค ๐
- 2
- 2
- 37
Q&A
CartItem ์ถ๊ฐ์
์๋ ํ์ธ์ chjcmy๋๊ด์ฐฎ๋ค์ ์กฐ๊ฑด์ด ์ด๋ค ๊ฑด์ง์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์๋๋ฐ, ๊ฐ์์์ ๋ง์ํด ์ฃผ์ ๊ฒ๊ณผ ๊ฐ์ด ์ฌ์ฉํ๊ณ ์์ต๋๋ค.[๊ฐ์์์ ์ฌ์ฉํ๋ Provider ์ฝ๋](์ฌ์ง)[Riverpod ๋ฒ์ ์์ ์ฌ์ฉํ๋ ์ฝ๋](์ฌ์ง) ๊ฐ์ฌํฉ๋๋ค ๐
- 1
- 2
- 41
Q&A
const ์ปค์คํ ํด๋์ค
์๋ ํ์ธ์const๊ฐ ๋ถ์ ๊ฒฝ์ฐ์๋ ์ปดํ์ผ ํ์์ ์ฐ์ฐ์ด ๋๋๊ณ ์์ ๋ถ๋ณ ๊ฐ์ฒด๋ก ๋ค๋ค์ง๊ธฐ ๋๋ฌธ์ ๋ด๋ถ์ final๋ก ์ ์ธ๋ ๋ฐฐ์ด์ด ์์ด๋ ํด๋น ์์ฑ์ ์์๋ฅผ ๋ณ๊ฒฝํ๋๊ฒ ๋ถ๊ฐ๋ฅํฉ๋๋ค.์๋ ์์ ๋ฅผ ๋ณด์๋ฉด, const๊ฐ ๋ถ์ ๊ฒฝ์ฐ์๋ ๋ด๋ถ ์์ฑ์ add() ํจ์๋ฅผ ํธ์ถ ํ ์ ์์ต๋๋ค.DartPad ๋งํฌ์์ ํด๋น ์ฝ๋๋ฅผ ์คํํด ๋ณด์ค ์ ์์ต๋๋ค.void main() { try { const family = Family(["mom"]); family.members.add("dad"); print(family.members); } catch (e) { print(e.toString()); // Unsupported operation: add } final family = Family(["mom"]); family.members.add("dad"); print(family.members); // [mom, dad] } class Family { final List members; const Family(this.members); }๊ฐ์ฌํฉ๋๋ค :)
- 1
- 1
- 32
Q&A
Dart ๋ฌธ๋ฒ ์ค์ต๋ฌธ์ ํ๊ณ ์๋๋ฐ์
์๋ ํ์ธ์ ์ ์ด๋์ค์ต ์๋ฃ๋ ๊ฐ์ ์ด์์ ์ถ๊ฐ์ ์ธ ํ์ต์ ํ ์ ์๋๋ก ๋๋ฆฐ ์๋ฃ์ด๋ฉฐ, ๊ฐ๋ฐ์๋ผ๋ฉด ํ์ฐ์ ์ผ๋ก ๋ง๋๋ ๋ชจ๋ฅด๋ ๊ฒ์ ๊ฒ์ํ๋ ํ์๋ฅผ ํ ์ ๋ฐ์ ์๋๋ก ์ ๋๋์ด ์์ต๋๋ค.๋ํ ๊ฐ์์์ ์ ๊ณตํ๋ ๋ฌธ์ ๋ ํ๋ก๊ทธ๋๋ฐ ์ค๋ ฅ์ ํ ์คํธํ๊ธฐ ์ํจ์ด ์๋๋๋ค. ๊ฐ์ ๋ด์ฉ์ ์ถ๊ฐ์ ์ผ๋ก Dart์ ํ์ฉ ์ผ์ด์ค๋ฅผ ๋ณผ ์ ์๋๋ก ์ ๊ณต๋๋ฆฌ๋ ์๋ฃ์ด๋ฉฐ ํ์ตํ์๋ฉด์ ๋ด๊ฐ ๋ฌด์์ ๋ชฐ๋๋์ง ๋ฐ๊ฒฌํ์ จ๋ค๋ฉด, ๋์๊ณผ ์๋ฆฌ๋ฅผ ์ดํดํ๊ณ ์์ผ๋ก ํ์ํ์ ๊ฒฝ์ฐ ํ์ฉํ์๋ฉด ๋ฉ๋๋ค.int totalPrice(List> cart) { int result = 0; for (Map item in cart) { int price = item["price"] as int; int count = item["count"] as int; result += price * count; } return result; }์ ์ธํ์ง๋ ์์ item์ด๋ผ๋ ๋ณ์๋ฅผ ๊ฐ์ง๊ณ ์ค๋ ๊ฒ์ ์ฝ๋์์ for in ๋ฌธ์ ๋ค๋ฃจ๋๋ฐ for (Map item in cart) ์ด ๋ถ๋ถ์ cart์ ์์๋ฅผ ๊บผ๋ด์ด item์ด๋ผ๋ ๋ณ์์ ํ ๋นํ๋ ์ ์ธ์ผ๋ก ๋ณด์ฌ์ด ๋ง์ต๋๋ค.๋๋ต ์ด๋ฐ์์ ์ ์ธ์ด๋ผ๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค. Map item = cart์ ์ฒซ ๋ฒ์งธ ํญ๋ชฉitem์ ๋ณ์ ์ด๋ฆ์ด๋ ๋ง์๋๋ก ๋ค๋ฅธ ์ด๋ฆ์ ์ฐ์ ๋ ๋ฌด๋ฐฉํ์ง์. ๊ทธ๋ฆฌ๊ณ ์ค๊ดํธ ์์ชฝ์ด cart ์์ดํ ์ ๊ฐ์ ๋งํผ ๋ฐ๋ณต ์คํ๋๋ฉฐ, item์๋ ๊ฐ ์์ฐจ์ ํด๋นํ๋ cart์ ์์๊ฐ ๋งค๋ฒ ํ ๋น๋ฉ๋๋ค.as ๋ก ํ์ ์ ์บ์คํ ํ๋ ๊ฒDart์๋ ํ์ ์ ๋ณํํ๋ ๋ค์ํ ๋ฐฉ๋ฒ๋ค์ด ์์ต๋๋ค. ์ ์์ ์์ dynamic ํ์ ์ int๋ก ๋ณํํ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์๊ฐํด ๋๋ฆฐ ๊ฒ์ผ๋ก ์ดํดํ์๋ฉด ๋ฉ๋๋ค. ํ์ตํ์๋ค ๋ณด๋ฉด ์ดํด๊ฐ ์๋๋ ๊ฒ๋ค์ ๋ง์ด ๋ง๋๊ฒ ๋ฉ๋๋ค. ์๋ง์ ์ ํ ์ง์๋ค์ด ์จ์ด์๋๋ฐ ๋ด๊ฐ ๋ฌด์์ ๋ชจ๋ฅด๋์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ ๊ทธ๋ด ์ ์๋๋ฐ, ๊ฒ์ํด ๋ณด์๊ณ ๊ทธ๋๋ ๋ชจ๋ฅด๋ฉด ์ง๊ธ์ฒ๋ผ ์ง๋ฌธ์ ์ฃผ์ธ์. ๋ํ ์ง๊ธ ๋น์ฅ ํ์ํ ๊ฒ์ด ์๋๋ผ๋ฉด ์ด๋๊ฐ ๊ธฐ๋กํด ๋์๋ฉด ๋์ค์ ๋ดค์ ๋ ์ดํด๋๋ ๊ฒฝ์ฐ๋ค๋ ์์ต๋๋ค.์ ์ฒด์ ์ธ ์ง๋๊ฐ ๊ทธ๋ ค์ง์ง ์์ ์ฒ์์๋ ์ค์ต์๋ฃ๋ฅผ ๋ชจ๋ ์คํตํ์๊ณ ์ญ ๊ฐ์๋ฅผ ์๊ฐํด ์ฃผ์ธ์. ์ดํ ๋ด๊ฐ ๋ง๋ค๊ณ ์ถ์๊ฒ ์๋ค๋ฉด ๋ฐ๋ก ํด๋น ํ๋ก์ ํธ๋ฅผ ์งํํด ๋ณด์๊ณ ๊ทธ ๊ณผ์ ์์ ์ค์ต ์๋ฃ๋ค์ ์ฐธ๊ณ ํ๋ฉด์ ํ์ตํ์๋ ๋ฐฉ๋ฒ๋ ์ข์ต๋๋ค.
- 1
- 2
- 53
Q&A
๊ฐ์ ์๊ฐ ๊ธฐ๊ฐ ์ฐ์ฅ ์์ฒญ๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์.๊ธฐ์ด์ ์ค์ ๊ฐ์ ๋ชจ๋ ์๊ฐ ๊ธฐํ์ ์ฐ์ฅํด ๋๋ ธ์ต๋๋ค.๊ธฐ๊ฐ์ด ๋ง๋ฃ๋ ๋ค์๋ ๊ด์ฐฎ์ผ๋ ํ์ํ์ค ๋ ์ธ์ ๋ ์ง ์ฐ์ฅ ์์ฒญ ์ฃผ์ธ์ ๐ ๊ฐ์ฌํฉ๋๋ค.
- 1
- 2
- 44
Q&A
์ ๋ฆฌํฉํฐ ๊ธฐ๋ฅ์ด ์๋ฉ๋๋ค
์๋ ํ์ธ์.๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ฌ ๋ ๊ฐ์ง ๋ต๋ณ์ ๋ฐ๋ผํด ๋ณด์๊ณ ๊ทธ๋๋ ํด๊ฒฐ์ด ์๋์๋ ๊ฒฝ์ฐ ์นดํก์ผ๋ก ๋ฌธ์ ์ฃผ์ธ์.๊ฐ์ฌํฉ๋๋ค ๐
- 1
- 1
- 41
Q&A
flutter ์๋ฎฌ๋ ์ดํฐ ์คํ ์๋ฌ
C:\๊ณ์ ๋ช \.gradle ํด๋๋ฅผ ์ญ์ ํ์ ๋ค ์ฌ์ํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์์ต๋๋ค ๐ ์ฐธ๊ณ ๊ธhttps://codejinjinh.tistory.com/275https://stackoverflow.com/questions/31743942/errorunexpected-lock-protocol-found-in-lock-file-expected-3-found-0
- 1
- 3
- 173
Q&A
flutter ์๋ฎฌ๋ ์ดํฐ ์คํ ์๋ฌ
์๋ ํ์ธ์.์์ธ ํ์ ์ ์ํด vscode terminal์ด๋ ๋ช ๋ น ํ๋กฌํํธ์์ flutter doctor ๋ช ๋ น์ด๋ฅผ ์คํํ ๊ฒฐ๊ณผ๋ฅผ ์ฒจ๋ถ ๋ถํ๋๋ฆฝ๋๋ค. ๋ ๋น ๋ฅธ ๋์์ด ํ์ํ์ ๊ฒฝ์ฐ ํ๋ทฐ์ด๋ฅผ ์ค์นํ์ ๋ค ๋งํฌ๋ก ๋ฌธ์์ฃผ์ธ์.๊ฐ์ฌํฉ๋๋ค :)
- 1
- 3
- 173
Q&A
์ฝ๋ ์์ฑ๊ธฐ - ์ค์ต build runner ์ ๋๋ ๋ถ.
์๋ ํ์ธ์.๊ฐ์์๋ฃ 05. ์ฝ๋ ์์ฑ๊ธฐ โ ์ค์ต ์ค๋น โ 1๋ฒ์ ์ฝ๋์ค๋ํซ์ผ๋ก ๋ค์ ๋ช ๋ น์ด๊ฐ ์ ๊ณต๋๊ณ ์์ต๋๋ค.dart pub add -d freezed build_runner json_serializable25.01.07 ๊ธฐ์ค ์ต์ ๋ฒ์ ์ธ flutter 3.27.1์์ ์ ๋ช ๋ น์ด๋ฅผ ์คํํ๋ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด freezed: ^2.5.8 ๋ฒ์ ์ด ์ค์น๋ฉ๋๋ค.(์ฌ์ง)์ค์นํ ๋ ์ฌ์ฉํ์ ๋ช ๋ น์ด ๋๋ ์ฌ์ฉํ๊ณ ๊ณ์ flutter ๋ฒ์ ์ ํ์ธํด ๋ณด์๊ธฐ ๋ฐ๋๋๋ค.flutter ๋ฒ์ ์ flutter --version ๋ช ๋ น์ด๋ฅผ ํตํด ํ์ธํ ์ ์์ต๋๋ค.(์ฌ์ง)์ดํ์๋ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ค๋ฉด, ๋ฌธ์ ์ฌํ ๋ฐฉ๋ฒ์ ๊ณต์ ํด ์ฃผ์๋ฉด ํ์ธํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.๋ฌธ์ ์ ๋ณด ๋ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ ๊ณต์ ๊ฐ์ฌํฉ๋๋ค :)
- 1
- 2
- 107