일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 오토레이아웃
- todolist
- DART
- strikeThrough
- 코드스니펫
- pull down button
- userdefaults
- URLSession
- UISlider
- Wil
- Flutter
- 스파르타코딩클럽
- Swift
- attributedText
- 내배캠
- 계산기만들기
- ListTile
- 개발자
- ios
- 플러터
- Storyboard Reference
- 날짜처리
- 내일배움캠프
- Storyboard
- 앱개발
- pop up button
- 메모장만들기
- Xcode
- 커맨드라인툴
- 알고리즘
- Today
- Total
이리메라 갖다가
[Flutter/Dart] 팀 소개 어플 만들기(3) : overflow, SharedPreferences, autofocus, EdgeInsets 본문
[Flutter/Dart] 팀 소개 어플 만들기(3) : overflow, SharedPreferences, autofocus, EdgeInsets
너이르나 2023. 7. 12. 21:10container에 이미지를 넣으려고 witdh, height 값을 지정함
코드 공유해서 다른 팀원이 작업하니까 해상도가 달라서 overflow 발생...
Expanded()
자식(Child)이 사용 가능한 공간을 채우도록 행(Row), 열(Column) 또는 유연한영역(Flex)의 자식을 확장하는 위젯
Flexible()
차지해야하는 공간보다 더 공간을 차지하게 하고 싶다면 flexible 적용
Row에 속해있는 Container 들을 flexible로 각각 비율 지정해서 오류 해결함.
SharedPreferences
저장 패키지 사용하기
https://pub.dev/packages/shared_preferences
상세페이지 메모칸 입력하고 저장, 리로드 했을 때 저장된거 불러오기!!
1. 패키지 설치
flutter pub add shared_preferences
터미널에 flutter pub add shared_preferences 설치하고 pubspec.yaml 파일에 설치된거 확인
2. 선언하기
prefs = await SharedPreferences.getInstance();
3. 입력받은 데이터 리스트화, 리스트에서 String으로 변환
createProfile(
{required String photo,
...
}) {
Profile memo = Profile(
photo: photo,
...
);
profileList.add(memo);
notifyListeners(); // Consumer<MemoService>의 builder 부분을 호출해서 화면 새로고침
saveProfileList();
}
updateProfile({required int index, required String content}) {
Profile memo = profileList[index];
memo.content = content;
notifyListeners(); // Consumer<MemoService>의 builder 부분을 호출해서 화면 새로고침
saveProfileList();
}
deleteProfile({required int index}) {
profileList.removeAt(index);
notifyListeners();
saveProfileList();
}
saveProfileList() {
List profileJsonList = profileList.map((memo) => memo.toJson()).toList();
String jsonString = jsonEncode(profileJsonList);
prefs.setString('profileList', jsonString);
}
loadProfileList() {
String? jsonString = prefs.getString('profileList');
if (jsonString == null) return; // null 이면 로드하지 않음
List profileJsonList = jsonDecode(jsonString);
profileList =
profileJsonList.map((json) => Profile.fromJson(json)).toList();
}
Textfield(autofocus: false)
페이지 이동할 때 자동으로 텍스트필드에 focus 안되게 설정하기
color: Colors.transparent
Text, Icon가 같은 Container에 있는데 여백을 클릭하면 링크로 안넘어가는 문제
>> 해당 컨테이너에 투명색 배경 컬러 지정
child: GestureDetector(
onTap: () {
final url = profile.blog;
launchURL(url);
},
child: Container(
color: Colors.transparent,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 15.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Icon(
CupertinoIcons.link,
color: Colors.white,
size: 15,
),
Text(
"Blog",
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 15,
color: Colors.white,
),
),
],
),
),
),
),
padding: EdgeInsets
1. .fromLTRB
순서대로 left, top, right, bottom 여백 지정
2. .all
LTRB 모두 일괄 여백 지정
3. .symmetric
일부지정 (vertical: or horizontal: )
4. .only
오직 한 부분만 여백 지정
padding: EdgeInsets.symmetric(horizontal: 20.0),
'TIL' 카테고리의 다른 글
[Swift] 기초문법 강의 복습 (2) | 2023.07.17 |
---|---|
[Flutter/Dart] 팀 소개 어플 만들기(5) : 깃허브 레포지토리 가져오기/fork, 프로젝트 피드백 (0) | 2023.07.14 |
[Flutter/Dart] 팀 소개 어플 만들기(4) : AdMob, 프로젝트 회고 (0) | 2023.07.13 |
[Flutter/Dart] 팀 소개 어플 만들기(2) : ListView.separated(), ListTile (0) | 2023.07.11 |
[Flutter/Dart] 팀 소개 어플 만들기(1) : 기초 틀 작업, ListView (1) | 2023.07.10 |