많은 것을 공부하게 되었다.
기본적인거라면, 텍스트나 위젯이 라우팅할때 이상하다면, Scaffold나 BottomTab같은 기본 위젯으로 쌓여있나 확인해봐야하고,
constructor 뒤에 이렇게 인스턴스 만들떄 항상 실행시켜주는 함수를 추가할 수 있다. 콜백함수는 아니고 뭐랄까.. 콜포워드함수 같은거랄까. 이게 꼭 필요했는데 좋았다. NotifierProvider할 때, state를 초기화 시켜주는데 이 방법을 사용할 수 있다는 것이 신기했음. 이제 저건 constructor 밑에 class안에 선언된 함수를 적용시킬 수 있다.
const MyApp({super.key}){ initFuction() };
Color(0xff 헥스값)
이것도 익숙해졌고
GestureDetector를 doubleTap같은 메소드보면서 나중에 다양하게 활용할 수도 있겠다는 생각이 들었으며,
파이어베이스 관련 로직들도 많이 알았다. Query와 QuerySnapshot 그리고 Doc 이건 또 로직 만들면서 한 번 더 해보고 정리해야지
Expanded 안에 SingleChildScrollView 들어가는거 확인했고, 앞으로 이상하면 내가 Expanded를 이상한 위젯에 적용한 것..
잘 분리해놔서 진짜 코드 볼 떄 안헷갈리게 해놓는게 생산성을 많이 향상시킬 것 같다고 생각했다.
아 그리고 TextInputController 신기하게, 직접 값을 바꿀 수 있다.
secure storage 에서 임시저장한 값을 가져와서 현재 textinputController.text에 때려박아도 자동으로 된다.
하지만 여러가지 안정성 문제로 스택 오버플로우에서는
messageTextController.value = TextEditingValue(
text: text,
selection: TextSelection.fromPosition(
TextPosition(offset: text.length),
),
);
요런식으로 쓰는 것을 좀 더 추천하더이다. TextSelection을 쓴다나뭐다나
secureStorage는 write으로 쓰고, 키 밸류 값 항상 jsonDecode jsonEncode해줘야하는거 다시금 상기했고,
FlutterToast도 그냥 쓰다가, 이번에 작성해보면서 별거 없구나 싶었다.
아 팝업창은 ShowDialog와 AlertDialog
showDialog(
context: context,
builder: (BuildContext context) => AlertDialog(
actionsAlignment: MainAxisAlignment.center,
titleTextStyle: const TextStyle(
color: Color(0xff72D4A5),
fontFamily: "neodgm",
fontSize: 22,
),
contentTextStyle: TextStyle(
color: Color(0xff72D4A5),
fontFamily: "neodgm",
fontSize: 18,
),
backgroundColor: Color(0xff262630),
title: Text('텔레파시를 전송합니다🚀'),
content: Text("텔레파시 배터리가 1개 차감됩니다."),
actions: [
ElevatedButton(
style: ElevatedButton.styleFrom(
textStyle: TextStyle(
color: Color(0xff72D4A5),
fontFamily: "neodgm",
fontSize: 20,
),
backgroundColor: Color(0xff72D4A5),
minimumSize: Size(40, 50)),
onPressed: () => Navigator.of(context).pop(),
child: Text('보내기')),
],
),
요런식으로 쓴다고 보면 된다.
근데
CrossAxisAlignment는 stretch로하면 버튼 길이는 쭈욱 늘어난다.
위젯들이 자동으로 상위 위젯의 공간을 다 차지하려고 하는 것 같은데(상위 위젯의 크기가 정의되어있다면 말이지)
이건 진짜 꼭 정리 하고 만다..
아까전에 Button이 Expanded 위젯의 크기를 자꾸 꽉 채워서 문제였는데 그래서
expanded는 남은 공간들에서 비율로 차지한다는 설명이 떠올라서
버튼 자체는 Expanded에 구애받지 않고, 그냥 사이즈 크기 딱 정해버렸고
버튼이 맨 아래에 있었고 위에있는 다른 위젯들은 모두 Expanded로 서로 공간을 나누어 가지게 되었다.
flexible은 나머지 공간을 버리는거라그랬나? 아무튼 나머지 공간을 활용한다는 점을 잘 생각하면서 하면 expanded이용해서 화면 그리기 좀 더 수월해질듯
'개발 | > Flutter' 카테고리의 다른 글
(작성중) BottomTabNav + GoRouter + provider (0) | 2023.02.11 |
---|---|
Navigator data 전달, (context).push , pop 메소드들 (0) | 2022.12.27 |
GoRouter Redirect refresh (0) | 2022.12.11 |
[Flutter] 카카오 로그인 (0) | 2022.11.12 |
[flutter] firebase 연동도 해본다 (0) | 2022.11.06 |