![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ceEq2f/btsGO8RnAET/DJwtxnD8PrHioAxgDk6qtk/img.png)
코드카타 각도기 문제 정답class Solution { fun solution(angle: Int): Int { return when { angle 1 // 예각 angle == 90 -> 2 // 직각 angle 3 // 둔각 angle == 180 -> 4 // 평각 else -> -1 // 180도를 초과하는 경우는 정의되지 않음 } }}when 함수를 이용해 angle값에 따라문제조건에 맞는 숫자를 반환하도록 했다. when 함수when (변수) { case1 -> 동작1 case2 -> 동작2 else -> 동작3 }when..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/NUqjv/btsGRpcowuR/ODm4OfF77O4CTN1sZGjjUK/img.png)
코드카타 두 수의 차 문제 정답class Solution { fun solution(num1: Int, num2: Int): Int { return num1 - num2 }}Solution클래스의 solution(num1: Int, num2: Int)함수는두 정수 num1과 num2를 매개변수로 받아 num1에서 num2를 빼는 연산을 수행하고 그 결과를 반환한다. 두수의 곱 문제 정답class Solution { fun solution(num1: Int, num2: Int): Int { return num1 * num2 }}두수의 곱을 반환하면 된다. 몫 구하기 문제 정답class Solution { fun solution(num1: In..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bEZGiB/btsGOHLockd/XXTtx6sEatuTXGJCuQIvF1/img.png)
홈 화면 레이아웃 그리기 그릴 화면 일단 그려야 할 홈 화면의 레이아웃이다. 라우팅은 버튼을 통해서 이루어지며, 도전과제 클리어 여부, 운동기록의 여부에 따라 다른 화면을 출력할 것이다. 단색으로 이루어진 아이콘이 아닌 경우 라이트모드와 다크모드에서 출력할 svg파일 2개를 프로젝트에 추가해줘야 한다. common_outline_button.dartimport 'package:escape_anchovy/res/text/colors.dart';import 'package:flutter/material.dart';class CommonOutlineButton extends StatefulWidget { const CommonOutlineButton( {super.key, this.wid..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dgCaip/btsGNb0HeUS/P43QUu0Re4RZ2Hp85BsHb0/img.png)
개요 이름 입력 페이지를 구현할 것이다. 이 페이지는 스플래쉬 화면에서 라우팅이 되는데이름입력을 한 상태라면 홈화면으로 라우팅이 되도록 할 것이다. Common 위젯 저 페이지를 구현하는데 3개의 Common위젯들이 필요하다.버튼, 텍스트필드, 유효성 검사 메시지 이렇게 3개 만들어주면 된다. common_button.dartclass CommonButton extends StatefulWidget { const CommonButton({ super.key, required this.text, this.width = double.maxFinite, this.height = 50, this.onPressed, this.textColor, this.backgrou..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/rzOqG/btsGLhM24DY/tY7ewuCmsL9L0BUsBBt0OK/img.png)
앱바 레이아웃 구현 앱바 우측에 위치한 아이콘을 누르면테마가 변경되도록 구현할 것이다. 모든 화면에서 공통적으로 사용할 앱바를 하나 만들어주자 extension ThemeExtension on BuildContext { bool get isLight => Theme.of(this).brightness == Brightness.light;}colors.dart에 이걸 추가하면 'context.isLight'로 현재테마가 무슨 테마인지 감지할 수 있다. context.isLight는 현재 테마가 라이트테마이면 true를 반환하고그렇지 않다면 false를 반환한다. import 'package:escape_anchovy/res/text/styles.dart';import 'package:flutte..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/SgD9D/btsGC0jHNG2/9RsnqYuxB8sxiaMep3kCYk/img.gif)
파일 분리 void main() { runApp(const MyApp());}class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), useMaterial3: true, ), home: const MyHomePage(title: 'Home'), ); }}// MyH..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/mywpe/btsGCvRJ0ao/hKbHIaSg0jNdKb4xp4Bt9k/img.png)
프로젝트 생성 ! 먼저 플러터 개발환경 세팅을 완료해야 된다. vscode를 실행시킨 후 ctrl + shift + p > Flutter New Project > Aplication 누르고 프로젝트의 위치를 선택해준다.나같은 경우는 찾기 쉽도록 바탕화면으로 설정해줬다. 이렇게 생성한 프로젝트는 폴더형식의 파일이다. 프로젝트 이름(폴더명)을 지어주고 'Enter' 키를 누르면 이렇게 프로젝트가 생성된다.다시 프로젝트를 열 때는 파일 > 폴더열기 > 생성한 프로젝트 폴더 선택 순으로 하면 된다. 폴더구조 세팅 프로젝트를 생성하면 위와같은 기본 폴더구조가 보일텐데여기서 프로젝트에 필요한 폴더나 파일을 추가할 것이다. 아래 빈 곳을 클릭한 후 폴더 생성버튼을 눌러 'asset' 이라는 폴더를..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cYyKuB/btsGo67lMBb/4c6kh8skGFndP6EJ0C7we1/img.png)
개요 무스마에서 배운 플러터 지식을 기반으로 하나 만들어보고 싶은 앱이 생겼다. 바로 내 운동루틴에 맞춘 운동일지 앱이다. 예전에는 나름 꾸준히 루틴대로 운동을 했었는데 근래에는 운동을 소홀히 했던 것 같다. 그래서 내가 쓰기 위한 운동일지 앱을 하나 만들어서 나름대로 목표를 정하고 변화과정을 한눈에 보기쉽게 알 수 있도록 하면 되게 좋을 거 같다는 생각이 들었다. 앱 컨셉 본인은 체질 때문에 어릴 떄부터 쭉 마른 체형에 속해있던 사람이었다. 마른 사람들을 보통 멸치라고 부르는데 본인은 이 멸치상태를 탈출하고 싶었다. '운동 열심히 해서 멸치에서 고등어라도 되어보자!' 이게 이 앱의 취지이다. 그래서 앱 이름을 '멸치 탈출'로 지었다. 구현할 화면들 1. 스플래쉬 화면 2. 메인화면 3. 유저 프로필 화..