배운것들을 정리합니다.
三昧境

전체 글 46

[플러터 Flutter] Private, getter/setter가 무엇인가? 어떻게 사용하는가?

프라이빗 (Private) Dart에서는 _name처럼 변수나 메서드의 이름 앞에 _언더스코어를 붙이면 이 변수나 메서드를 프라이빗 취급합니다.프라이빗은 (같은 파일 내) 클래스 내부에서만 접근 가능하며외부로부터의 직접 접근을 막아 데이터의 무결성을 유지하고객체지향 원칙 중 하나인 캡슐화의 원칙을 지킵니다.하지만 Dart의 프라이빗 접근 제어는 파일 수준의 접근 제한입니다.이는 같은 파일 내에 있는 모든 코드가 프라이빗 변수와 메서드에 접근할 수 있다는 의미입니다.그래서 같은 파일 내에서는 _로 시작하는 프라이빗 변수나 메서드에도 접근할 수 있습니다.프라이빗 변수를 완전히 숨기려면 프라이빗 변수와 메서드를 다른 파일로 분리(리팩토링)하여 사용하는 것이 좋습니다. 기능 및 역할데이터 캡슐화 (Encapsu..

[플러터 Flutter] 인자(Parameter)와 인수(Argument)의 차이

인자 = 매개변수 = parameter입니다.왜 인자인지 모르겠습니다.애초에 parameter는 매개변수로 불립니다. 한국으로 들어오면서 그런 건진 몰라도 파라미터와 아규먼트 또는 매개변수와 인수로 불러도 됩니다.  인자 매개변수 (Parameter)void player(String name) { // (String name)이 매개변수(Parameter). print(name);}함수가 호출될 때 외부로부터 입력받는 값을 담기 위해 선언됩니다.  인수 (Argument)void player(String name) { // (String name)이 매개변수(Parameter). print(name);}void main() { // 함수 호출 시 인수(Argument)를 전달 player("A..

[플러터 Flutter] 매개변수(Parameter), 인스턴스변수(InstanceVariable), 전역변수(GlobalVariable), 지역변수(LocalVariable)

매개변수 (Parameter) // ()소괄호 안이 비어있음. player함수는 parameter가 없음.void player() { String name = "name";}// ()소괄호 내부가 parameter.void player(String name) { print(name);}매개변수는 함수나 생성자에서 사용되며, 호출 시 전달된 값을 받기 위한 변수입니다.말 그대로 함수 내에서 변수가 바뀔 시 값이 바뀐다 생각하면 됩니다.ex) y = 1000x  인스턴스 변수 (Instance Variable) 인스턴스 변수는 클래스의 속성입니다. 이 변수들은 클래스의 인스턴스(객체)에 속하며, 각 인스턴스마다 별도로 유지됩니다.인스턴스 변수를 통해 객체의 상태를 저장하고 관리할 수 있습니다.class ..

[플러터 Flutter] 소셜로그인 카카오톡 1 social login with Kakao 1

Flutter 3.22.2Dart 3.4.3DevTools 2.34.3AndroidStudio 17.0.10 koalamac 기준으로 작성되었습니다.들어가기 앞서 카카오톡 플러터 공식문서도 있음 참고 부탁드립니다.https://developers.kakao.com/docs/latest/ko/flutter/getting-started Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.developers.kakao.com  1. Kakao Developers 설정 https://developers.kakao.com/ 로 접속합니다. Kakao Developers카카오 API를 활용하여 다양한..

[플러터 Flutter] 안드로이드 패키지명, iOS 번들아이디 찾기 Find Android Package Name, iOS BundleID

Flutter 3.22.2Dart 3.4.3DevToos 2.34.3AndroidStudio 17.0.6  Androidandroid/app/build.gradle에 들어가시면namespace ="패키지명"으로 찾으실 수 있습니다.최근 Android Gradle Plugin 7.0 버전에서부터는 AndroidManifest.xml 파일에 package 속성이 명시적으로 나타나지 않는 경우가 있습니다. 이는 새로운 Gradle 플러그인 설정 방식과 관련이 있습니다. 대신, build.gradle 파일의 namespace 속성이 사용됩니다.프로젝트 구조를 명확하고 코드관리를 쉽게 하는 차원에서 진행됐다고 합니다.AndroidManifest.xml에 패키지명이 없다 하더라도 namespace에서 동일한 효과를..

Flutter/tip 2024.06.16

[플러터 Flutter] 맥에서 안드로이드 키해시 구하기 디버그/릴리즈 Obtain Android KeyHash from Mac

첫 번째 디버그 키해시(추천)keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android | openssl sha1 -binary | openssl base64 위 명령어를 터미널에 입력하게 되면이러한 형태로 경고문과 디버그용 키해시값을 받게 됩니다.명령어 가운데에 보시면 파일의 위치가 표기되어있는데Command + Shift + .을 누르시게 되면 숨겨진 파일을 볼 수 있습니다.그리하여 이 경로를 추적해 보면이렇게 Users/사용자맥이름/.android/에 있는 debug.keystore 파일의 값을 받게 됩니다.두 번째 디버그 키해시(비추천)keytool -..

Flutter/tip 2024.06.16

[플러터 Flutter] 약관 동의 페이지 만들기2 (접히는 TextBox "ExpansionTile")

위 GIF처럼 터치했을 때 TextBox가 펼쳐지며 내부의 내용을 볼 수 있고 다시 터치하면 접히는 걸 구현해 보겠습니다.Flutter v3.22.2Dart v 3.4.3DevTools 2.34.3우선 저기 있는 이용약관 자체는 굉장히 길기 때문에 파일을 하나 따로 만들어두도록 하겠습니다.제 생각에는 지금만 이렇게 주저리주저리 글을 적어놓지 나중에 제대로 된 앱을 만들려면 서버든 DB든 JSON형태로 파싱 해서 텍스트를 쓰지 않으려나.. 하는 추측이 있습니다..왜냐하면 저는 아직 초보기 때문에 모릅니다..String agreeConditionText = '이용약관 동의 내용\n...'; String personalAgreeText = '개인정보수집이용 동의 내용\n...';String t..

[플러터 Flutter] 약관 동의 페이지 만들기1 (on/off 토글키 및 bool타입 선언)

Flutter v3.22.2Dart v3.4.3DevTools v2.34.3 우선은 동의하느냐 안 하느냐의 문제이기 때문에 bool로 접근하여 빌드해보았습니다.필수동의 2개, 선택동의 1개가 있으며필수동의 2개를 반드시 true값으로 만들어줘야 확인버튼을 활성화시켜다음 페이지로 넘어가는 기능을 구현해 보겠습니다// agreement_condition_text.dartbool isAllChecked = false;bool isRequireChecked = false;bool isConditionChecked = false;bool isInfoChecked = false;bool isThirdChecked = false;void updateAllChecked() { isAllChecked = isCondi..

플러터 당근마켓 앱 카피코딩3 (피드정리)

ListView에서 각기 다른 이미지, 글 보여주기feed.dart 파일 Feed Stete에 String을 담는 imageUrl이란 변수를 선언해 줍니다.허나 그냥 선언하면 안되고Feed class내에 imageUrl이 필수로 값을 받을수 있게끔final과 required this를 사용해서 선언해줍니다. 그리고 이미지를 담고있는 ClipRRect의 child에일반적인 String형식의 Url이 아닌 widget.imageUrl을 넣어줍니다.widget. 을 사용하는 이유는 State class내에는 존재하지 않고 더 상위 클래스인 StatefulWidget에 포함되어있고 이 둘의 class는 서로 다른 class이기 때문에 서로다른 class의 변수를 사용하기 위에서는 widget.변수이름으로 사용하..

플러터 당근마켓 앱 카피코딩2 (좋아요 기능 구현, 피드리스트)

좋아요 기능 구현 좋아요 기능을 구현하기 위해서는 현재 내가 보고 있는 페이지에 상태가 변하기 때문에(어떠한 로직으로 화면의 변화가 생기는것)그 해당 페이지의 State를 바꿔줘야한는데class Feed extends StatelessWidget { const Feed({ super.key, });현재 Feed라는 페이지는 StatelessWidget으로 되어있다. 이것을 안드로이드스튜디오 기준맥 option + Enter / 윈도우 Alt + Enter 를 눌러주면위 사진 처럼 자동으로 StatefulWidget으로 변환하여 줍니다.나도 잘 모르지만 해석해보자면@override = class Feed extends StatelessWidget 을 재정의 하겠다.State createState(..