본문 바로가기

전체 글338

[Flutter] Provider Provider는 application 전역에 걸쳐 상태를 공유하는 방법 중 하나입니다. 상속 관계가 깊을 경우 정보 공유를 하려면 부모 자식 간에 계속 해서 정보를 전달해야하는 불편함이 있는 데, 이를 해소해 줄 수 있습니다. 뭐 다른 framework들을 사용해 봤다면 익숙한 개념이실 거에요. Provider는 여러 가지 provider를 제공해 주는 데, 공식 페이지 설명이 영 괴상망측해서 알아보기가 힘드셨을 거에요. (제가 그랬거든요...) 이번 포스팅에서는 기본적으로 쉽게 사용하실 수 있는 방법을 알려드릴게요. Install Package 먼저, 필요한 package를 설치해 줍니다. pubspec.yaml 파일에 다음의 내용을 추가해 줍니다. dependencies: flutter: sdk: .. 2023. 8. 12.
[Typescript] Module System 이번 포스팅에서는 typescript의 module에 대해 가볍게 살펴보겠습니다. 즉, 하나의 파일에서 정의된 내용을 다른 파일에서 가져다 사용하는 방법에 대해 공유드리겠습니다. Default Export 하나의 module은 하나의 항목을 default로 export할 수 있습니다. // calc.ts const add = (x: number, y: number): number => { return x + y; }; export default add; 예제와 같이 add라는 함수를 default로 export 했습니다. 이제, 사용하는 부분을 살펴볼게요. // main.ts import myAdd from './calc'; console.log(myAdd(3, 4)); 보시는 대로 default로 ex.. 2023. 8. 9.
[Flutter] Online Multitools 개발기 Flutter를 공부해본 김에 평소에 필요했던 것을 한 번 만들어 봤습니다. https://hmultitools.web.app/ HoYa's Online Multi Tools hmultitools.web.app 임베디드 개발자이다보니 비트단위 계산을 하는 경우가 많아서, binary, hex 계산기가 필요해서 만들기 시작했어요. 만드는 김에 계산기 시리즈로 만들어볼까? 싶어서 평소에 카드 할인 같은 거 계산할 때 필요했던 할인 계산기도 만들고, 온라인 쇼핑할 때 대략적인 환율 정보를 매번 검색하느라 귀찮아서 환전 계산기도 만들었어요. ㅋㅋ 거기에 추가로 가끔 우리나라는 안쓰는 단위 정보가 쉽게 변환이 안되서 헷갈려서 필요했던지라 단위 변환기도 만들어 넣고, BMI 계산기도 넣어봤어요. 이제 사용해 보면서.. 2023. 8. 6.
[Flutter] How to Create Link Button 이번 포스팅에서는 Flutter에서 Link Button을 만드는 방법에 대해 살펴보겠습니다. 생각보다 어렵진 않으니 한 번 따라해 보세요. Add Packages 먼저, pubspec.yaml 파일을 열고 필요한 패키지를 추가해 줍니다. dependencies: flutter: sdk: flutter url_launcher: ^6.1.12 이제, 추가한 package를 가져옵니다. $ flutter pub get Configuration 전 iOS용으로 만들고 있어서, info.plist 파일에 다음 내용을 추가해 줬습니다. LSApplicationQueriesSchemes sms tel 다른 플랫폼을 사용하신다면 공식 페이지를 참고하셔서 설정해 주시면 되요. https://pub.dev/package.. 2023. 8. 2.
[Flutter] How to use Google Fonts in Flutter 이번 포스팅에서는 Flutter 앱에서 구글 폰트를 사용하는 방법에 대해 살펴보겠습니다. Add Package pubspec.yaml 파일을 열고, google_fonts를 추가해 줍니다. dependencies: flutter: sdk: flutter google_fonts: ^5.1.0 Import Google Fonts 다음으로 구글 폰트를 사용할 파일 상단에 다음과 같이 import 해줍니다. import 'package:google_fonts/google_fonts.dart'; Setting Up for MacOS 예제를 macOS로 작성 중이라 추가로 HTTP fetching에 대한 설정이 필요합니다. macos/Runner/DebugProfile.entitlements 파일을 열어 다음 ke.. 2023. 6. 30.
[Git] Tip: Get Diff and Apply using File Commit을 만들진 않고, 임시 테스트 용 정도의 수정을 공유하고 싶을 때가 있습니다. 그럴 때 유용하게 사용할 수 있는 방법입니다. Extract Changes to a File 다음 명령으로 간단하게 현재 수정 중인 사항을 파일로 추출합니다. $ git diff > diff.patch 이제 diff.patch에 변경 내용이 담겨 있고, 이것을 공유하면 됩니다. Apply Changes from a File 이제, 공유받은 파일에서 변경 내용을 가져와 적용해 볼게요. $ git apply diff.patch Working branch를 확인해보면 변경 내용이 잘 적용된 것을 확인하실 수 있습니다. Wrap Up 이번에는 임시 수정 사항을 파일로 추출하고 이를 적용하는 방법에 대해 살펴 보았습니다. .. 2023. 6. 8.
[Flutter] How to Handle Image in Mobile 이번에는 사진을 다루는 방법을 살펴보겠습니다. Setting Package 이미지를 쉽게 다룰 수 있도록 image_picker package를 설정하겠습니다. pubspec.yaml 파일을 열어 설정을 해 줍니다. dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.2 image_picker: ^0.8.7+4 Setting iOS 다음으로 iOS 설정을 해주겠습니다. 현재, iOS 11 버전 이상에서만 동작합니다. ios/Runner/Info.plist 파일을 열어 다음의 내용을 추가해 줍니다. ... NSPhotoLibraryUsageDescription 사진첩 권한이 필요합니다. NSCameraUsageDescription 카메라 권한이 필요합니다.. 2023. 4. 27.
[Git] Tip: Change Past Commit Messages 가끔 커밋 메세지가 잘못 작성된 것을 나중에 발견하게 되는 경우가 있습니다. 이것을 수정하는 방법에 대해 공유드리겠습니다. How to change 설명을 위해 임의의 repository를 작성하였습니다. 각자 자신의 환경을 생각하시면 될 것 같아요. 먼저, commit의 hash를 얻기 위하여 log를 보겠습니다. $ git log --oneline 이미 3번째 commit까지 올렸는데, 첫 번째 commit 메세지에 오타를 발견했네요. 이제, 현재 commit에서 해당 커밋까지 interactive하게 rebase를 합니다. $ git rebase -i 1243b39^ 다음과 같이 interactive한 설정을 할 수 있는 창이 나타납니다. 스샷과 같이 변경을 원하는 commit에 edit comma.. 2023. 4. 27.
[Flutter] How to Send Notifications on Flutter: Using flutter_local_notification 이번에는 iOS와 Android에서 알림을 보내는 방법에 대해 살펴보겠습니다. 이를 위해 flutter_local_notification이라는 플러그인을 사용하겠습니다. Creating Project 해당 내용에만 집중하기 위해, 기본 example을 사용하겠습니다. $ flutter create example Setting Plugin pubspec.yaml에 다음과 같이 사용할 플러그인을 명시해 줍니다. dependencies: flutter: sdk: flutter cupertino_icons: ^1.0.2 flutter_local_notifications: ^13.0.0 이제 프로젝트에 적용을 해줍니다. $ flutter pub get Setting iOS ios/Runner/AppDelegate.. 2023. 4. 21.