Dart에는 팩토리 생성자 가 있습니다. facory 키워드를 사용해서 생성자를 구현하면 해당클래스의 인스턴스를 항상 새로 만들지 않게 된다고 합니다. 예를 들어 볼게요-! AuthManager를 이렇게 factory생성자로 만들어서 싱글톤으로 쓸 수 있습니다. class AuthManager { static final AuthManager _manager = new AuthManager._internal(); factory AuthManager() { return _manager; } AuthManager._internal() { // 초기화 코드 } } factory생성자를 안쓴 다른 클래스(LoginViewModel)과 비교해본 코드입니다..! var manager1 = AuthManager(); ..
rest_framework에 있는 기본 exception과 APIException에 대해서 알아보겠습니다. [1] Exception 처리해야하는 이유 저의 SignupView는 이렇게 되어있는데요 아무 exception도 처리안해준 상태입니다. class SignupView(APIView): def post(self, request): unique_string = get_random_string(length=10) temporary_family_code = models.TemporaryFamilyCode(code=unique_string) user = User.objects.create_user(username=request.data['id'], password=request.data['password'..
아래 움짤처럼 여러 화면에서 상태를 공유해야할때 어떻게 해야하는지 State management 문서를 살펴보겠습니다. 1) 선언적으로 생각하기 우선 선언적으로 생각하라고 합니다. SwiftUI 처럼 state가 바뀌면 뷰를 아예 다시 그리는 컨셉 🆗👌 2) 임시상태 vs 앱상태 (Ephemeral state vs app state) 그 다음에 임시 상태와 앱상태를 구분하라고 합니다. (Ephemeral state vs app state) 임시상태는 말그대로 단일 위젯에만 딱 포함되는 상태입니다. (다른 위젯들이 이 위젯의 상태에 대해 몰라도됨) 그리고 사용자가 앱을 닫았다가 다시 시작하면 초기값으로 재설정되도 되는 상태입니다. 이런 경우 setState()를 써서 상태관리를 해주면 됩니다. 앱상태는 앱..
textField.text로 값을 가져올 수 있으면 좋겠지만,,,,! (이렇게 못함) Retrieve the value of a text field 문서에서는 TextField의 text를 얻기위해서 TextEditingController를 사용하라고 합니다. CupertinoTextField 생성자를 보면 TextEditingController를 넣어줄 수 있게 되어있네요 현재 이 화면을 만드는 LoginForm 코드는 이렇게 되어있는데요, 텍스트 필드에서 값을 가져올 수 있도록 바꿔보겠습니다,,!! 1) TextEditingController 만들기 우선 TextEditController를 만들어주세요 그리고 dispose함수를 오버라이딩하여서 위젯이 disposed될때 controller도 disp..
[1] DRF가 지원해주는 Authentication 종류 Django Rest Framework - Authentication 을 보면 이렇게 네가지의 Authentication을 지원해주고 있습니다. Basic은 username이랑 password로 인증하는데 테스트에서만 적절하다라고 나와있고 Token은 token으로 인증하는데, 클라이언트 - 서버 setup에 적절하다고 하고 (저는 이거 쓰겠습니다..!) Session은 AJAX client(뭔지모름ㅠㅠ)에게 적절하다고 하고 Remote는 무슨 말인지 모르겠어요ㅠㅠ [2] TokenAuthentication 설치하기 이미 rest_framework 패키지를 설치했으니까 settigs.py에 가서 앱만 추가해주면 됩니다. 그리고 아래 명령어를 해줍..
우선 플젝에 images 디렉토리를 만들어줍니다. 그리고 여기 넣고 싶은 이미지파일들을 넣어주세요 (저는 이 안에 tabbar라는 디렉터리도 하나 더 만들었어요) 아래 하이라이트한 형식의 이미지들을 넣을 수 있다고 합니다-! 그 다음에 pubspec.yaml에 가서 flutter 밑에 네모 친 것 처럼 이미지 디렉토리를 명시해주세요 문서에 보면 이렇게 해주는 것은 이 디렉토리에 있는 모든 이미지들을 include하겠다!! 하는 거라고 합니다. 이렇게 한땀한땀 이미지 path들을 넣어줄 수 도 있는데, 이것은 너무 귀찮으니까 디렉토리로 해줍니다. 그러면 pub get이 뜨는데 이걸 누르거나 아니면 콘솔 > 터미널 누르고 아래 명령어를 입력해주세요 flutter pub get 근데 iOS에서는 이미지를 잘 ..
NavigationBar랑 TabBar 모두 기본적으로 border가 들어가있는데요 주황네모는 NavigationBar의 border 회색네모는 TabBar의 border 입니다. 그 이유는 CupertinoTabBar에 들어가보면 디폴트 값으로 border가 설정되어있기때문이에요 CuperTinoNavigationBar에 들어가봐도 똑같이 디폴트 값으로 border가 세팅되어있습니다,, 그럼 이 두개의 선을 어떻게 지워줄 수 있을까요?! border에 null을 넣어주면 됩니다..!! TabBar의 border에도 null 넣어주고 NavigationBar의 border에도 null을 넣어주면 이렇게 border가 사라지게 됩니다.
SwiftUI에 HStack, VStack이 있다면 플러터에는 Row, Column이 있습니다. 그리고 SwiftUI에 Spacer가 있다면 플러터에는 SizedWidget이 있습니다. (혹은 Spacer: eunjin3786.tistory.com/277 ) [1] Row와 Column Row 와 Cloumn의 생성자는 우선 이렇게 생겼습니다. [2] Row, Column의 자식들 정렬 Row, Column의 생성자에 있는 MainAxisAlignment와 CrossAxisAlignment는 children을 어떻게 정렬해줄 건가!! 하는거에요 두개 다 enum type이고 각각 종류는 다음과 같아요 MainAxisAlignment - center - start - end - spaceAround - s..
flutter의 ListView 를 만들어보겠습니다. [1] 문서보기 리스트로 그려줄 데이터가 다 정해져있고 몇개 안된다면 아래처럼 해주면 됩니다. 하지만 데이터가 많다면 ListView.builder 를 사용해주면 됩니다. 그리고 리스트에 구분선을 넣고 싶다면 ListView.separated.를 사용해주면 됩니다. 참고로 Divider는 material 디자인에 있는 위젯이여서 (cupertino 위젯에는 Divider 없는 것 같아요) import 해줘야합니다. import 'package:flutter/material.dart'; [2] 더미데이터로 리스트뷰 만들어보기 일단 더미데이터로 ListView.separated. 를 이용하여 리스트를 만들어볼게요-! 각 Cell의 height를 따로 안넣..
flutter에서 iOS Style의 네비게이션을 만들고 싶다면 이렇게 두개를 같이 쓰면 됩니다-!! [1] CupertinoNavigationBar 우선 CupertinoNavigationBar 부터 살펴볼게요-! 말 그대로 navigationBar를 만들때 쓰는 위젯입니다. 생성자는 이렇게 생겼어요 저는 이렇게 navigationBar를 만들어볼게요-!! var _navigationBar = CupertinoNavigationBar( leading: Text("안녕", style: TextStyle(color: CupertinoColors.white, fontFamily: 'GyeonggiMedium')), middle: Text("안녕", style: TextStyle(color: Cupertino..
- Total
- Today
- Yesterday
- DRF APIException
- Django Heroku Scheduler
- github actions
- Python Type Hint
- Flutter Clipboard
- Flutter Spacer
- ipad multitasking
- Dart Factory
- flutter dynamic link
- ribs
- Django Firebase Cloud Messaging
- 장고 URL querystring
- 플러터 얼럿
- SerializerMethodField
- cocoapod
- 장고 Custom Management Command
- flutter 앱 출시
- 플러터 싱글톤
- flutter build mode
- Flutter getter setter
- flutter deep link
- 구글 Geocoding API
- Sketch 누끼
- Django FCM
- Flutter 로딩
- PencilKit
- drf custom error
- METAL
- Flutter Text Gradient
- Watch App for iOS App vs Watch App
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |