일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 웹뷰
- 프로그래머스
- Flutter
- 크롬개발자도구
- gestureRecognizers
- 입력 커서
- freezed
- StringUtils.isEmpty
- not working
- foreground
- 두 수의 나눗셈
- Chrome Developer Tools
- 안드로이드
- allowBackup
- 플루터
- project flow
- Set ID
- TCP/IP모델
- 앱
- carousel slider
- StringUtils.isBlank
- Could not create service of type FileAccessTimeJournal using
- 안보내짐
- 플러터
- fullBackupContent
- 에러
- VerticalMultiDragGestureRecognizer
- TextFormField
- runSpacing
- Flutter SDK
- Today
- Total
목록Flutter (14)
흰오목눈이야 개발하자
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/qZRtS/btsHnVWtzln/gJcyvezrKGHkr4KBVbSxJ1/img.png)
슬라이더 이미지 위젯 아래에 위와 같은 Indicator(인디케이터)를 구현하려고 한다 # 구현 결과 Row( mainAxisAlignment: MainAxisAlignment.center, children: imageUrls.asMap().entries.map((entry) { return Container( width: 8, height: 8, margin: const EdgeInsets.symmetric(vertical: 2, horizontal: 2), decoration: BoxDecoration( shape: BoxShape.circle, ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/LIj1k/btsufXgDmdw/L9c6QjBxJkUmyT9CekMxO0/img.png)
문제 이전 글) https://programmer777.tistory.com/119 글자 수를 체크하는데 제한된 글자 수를 넘기면 입력 커서가 처음으로 돌아가는 문제가 발생했다. →기대치 : 입력 커서를 끝에 위치시킨다. 원인 입력 커서가 처음으로 돌아가는 이유는 텍스트 필드의 'onChanged' 콜백 함수에서 텍스트를 수정할 때 커서 위치를 다시 조정하지 않았기 때문이다. 'onChanged' 콜백 함수는 텍스트 필드의 텍스트가 변경될 때 호출되며, 글자 수를 제한하는 로직을 적용하면 커서가 다시 텍스의 처음으로 이동할 수 있다. 해결 코드 부가 설명 입력한 문자열(text)에서 처음 10개의 문자를 선택한 것을 validatedText 변수에 넣어준다. 커서의 새로운 위치를 지정할 코드이다. 'Te..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/sf69j/btst6k4tYvf/qsApXm0RVYbmimvbFYVTJK/img.png)
문제 이름을 입력하는 경우 10자까지 입력이 가능하도록 maxLength를 통해 제한하고 싶었는데 숫자만 해당하고 한국어의 경우 적용이 되지 않았다. TextFormField( maxLength: 10, 원인 한국어와 같이 몇몇 언어는 글자 단위가 영어와는 다르게 처리될 수 있으므로, maxLength 속성이 정확히 동작하지 않는 경우가 있다고 한다. 이 경우 한국어 글자 수를 정확하게 제한하려면 TextEditingController를 사용하여 직접 제어해야 한다. 해결 TextEditingController를 사용하여 입력된 텍스트의 길이를 실시간으로 체크하도록 해준다. onChaged를 통해 입력하는 동안 글자수를 확인하도록 하고 10자를 초과하는 경우 입력을 제한한다. TextField( cont..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/TUiHl/btstwevS18T/SYfUHONRpBjUxs6F7NWrrK/img.png)
문제 QA 팀원 중 한 분만 안드로이드 앱을 삭제하고 새로운 버전을 다운하면 앱이 작동되지 않는 에러가 발생했다. 캐시 문제일까 싶어 조사해 봤다. 원인 안드로이드의 경우 사용자의 데이터를 구글 드라이브에 자동으로 백업하는 기능이 있었다. 해당 어플은 보안을 위해 flutter secure storage를 사용하고 있었기 때문에 데이터가 자동 저장되면 충돌하거나 예외가 발생할 가능성도 높았다. 앱의 자동 백업은 Android 6.0(API 수준 23) 이상에서 타겟팅하거나 실행되는 앱의 사용자 데이터를 자동으로 백업합니다. Android는 앱 데이터를 사용자의 Google Drive에 업로드하여 보존하며, 이곳의 앱 데이터는 사용자의 Google 계정 사용자 인증 정보에 따라 보호됩니다. 백업은 Andr..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/q542X/btstmvkt1i7/gX4RkJVkvTUAnxVx0HcRCK/img.png)
VSCode(비주얼 스튜디오 코드)에서 "fileName.code-snippets" 형식으로 코드 Snippet(스니펫)을 정의하는 것이 가능하다.여기서 Snippet(스니펫)이란?: 재사용이 가능한 코드로 반복 입력을 피할 수 있도록 도와주는 것을 말한다. 템플릿으로 만들었다고 보면 된다.이 스니펫을 활용하여 Freezed를 사용한 모델을 자동 생성할 수 있도록 만들어주려고 한다.순서1. vscode 폴더 안에 freezed.code-snippets 파일을 생성한다.2. 아래 코드를 사용한다.{ "Generate freezed class": { "prefix": "freezed", "body": [ "import 'package:freezed_annot..
Device States (디바이스 상태) Device States (디바이스 상태)는 3가지로 분류할 수 있다. - Background(백그라운드) : 앱은 실행되고 있지만 보이지 않는 상태에서 실행되는 것이다. 예를 들면 A 앱을 켜놓고 B 앱으로 이동할 경우 A앱은 보이지 않는 상태라 백그라운드 상태라고 볼 수 있다. - Foreground(포어그라운드) : 앱을 열어서 사용자 눈에 보이고 사용할 수 있는 상태를 의미한다. - Terminated : 디바이스가 잠겨져 있거나 실행되고 있지 않은 상태를 의미한다. Authorization Status (권한 부여 상태) - authorized(인증된) : 유저가 권한을 허가한 상태를 의미한다. - denied (거부한) : 유저가 권한에 관하여 허가를..
문제 Flutter Amplitude SDK를 구현했다. 테스트용 로그(예. Logger)는 확인이 가능해 이벤트를 성공적으로 보낸다고 생각했는데 실제 Amplitude 도구에서는 이벤트 송신이 안되었다. - 테스트 대상 OS : Android - Amplitude SDK (Flutter) 공식 사이트 : https://www.docs.developers.amplitude.com/data/sdks/flutter/ 원인 안드로이드의 경우 App set ID가 필수였다. 사용자의 개인 정보를 보호하기 위한 대안으로 설정한 것으로 이를 설정하지 않으면 Amplitude 이벤트를 송신할 수 없다. App set ID is a unique identifier for each app install on a devi..
자바를 공부하고 안드로이드에서 코딩할 때는 변할 수 없는 값(=재할당 할 수 없는 값)을 설정할 때 대체로 final을 사용했습니다. 다트라는 언어를 배우고 플러터 코딩을 할 때는 final만 있는 게 아니라 const도 있어서 둘 다 사용이 가능했는데 이 차이를 몰라 정리를 해보려 합니다. 변하지 않는 값을 지정할 때 아래와 같이 사용할 수 있습니다. const String nameConst = "Shu"; final String nameFinal = "Shu"; 공통점은 한 번 지정하면 값을 변경할 수 없습니다. (= 재할당 불가) 예) const String nameConst = "Shu"; final String nameFinal = "Shu"; nameConst = "Shua"; // error..