본문 바로가기

Flutter

[Flutter] const, final, dynamic, var 플러터의 언어 Dart도 다른 언어들과 비슷하게 변수를 선언할 때 변수형 외에도 몇가지 키워드를 제공하고 있다. 아래에서 살펴보도록 하자. 1. Var 어떤 변수형이라도 받을 수 있지만 한번 설정하면 "변수형"을 바꿀 수 없다! var boo = 123; boo = '철수'; // 에러! boo = 500; // OK! var foo = '영희'; foo = 0.1; // 에러!! 2. dynamic 어떤 변수형이라도 받을 수 있고, 한번 설정해도 변경 가능하다! dynamic boo = 123; boo = '철수'; // OK! boo = 500; // OK! dynamic foo = '영희'; foo = 0.1; // OK! 3. const 최초 선언 시 어떠한 변수형으로도 사용이 가능하지만 선언 이.. 더보기
[Widget] FocusNode FocusNode 파헤치기 🐋 TextField에 Text를 입력하고자 할 때 일반적으로는 모든 TextField를 눌러서 포커싱이 되면 Text 입력이 가능하지만FocusNode는 자동으로 포커싱을 넘겨주거나 해주는 기능이다. class _MyCustomFormState extends State { // 포커스노트 선언 FocusNode myFocusNode; // 폼이 생성될 때 호출 @override void initState() { super.initState(); // myFocusNode에 포커스 인스턴스 저장. myFocusNode = FocusNode(); } // 폼이 삭제될 때 호출 @override void dispose() { // 폼이 삭제되면 myFocusNode도 삭제됨 myF.. 더보기
[Widget] TextSpan의 height에 관련된 이야기 TexpSpan의 height 아래와 같은 코드가 있다고 생각해보자 Text.rich( TextSpan( children: [ TextSpan( text: '냠', style: logoBig(color: Colors.black).copyWith(height: 1.2),), TextSpan( text: '냠', style: logoBig(color: AppColors.bgColorDark).copyWith(height: 1.2), ), ], ), ), 근데 TextSpan으로 작성을 하면 아래의 그림과 같이 윗 공간에 여백이 남는다.. 해결방법 아래의 사진을 보고 아 TextSpan에서 height을 줘야 공백이 사라진다는 것을 알 수 있었다. 더보기
[Flutter] 몰랐던 사실 - widget.data 와 아닌 것의 차이 widget.data vs data 플러터를 하다보면 다른 클래스나 위젯에 Data를 넘겨주고 scaffold 아래에서 UI를 그려줄 때 widget. 을 붙여야 할 때가 있고 아닐 때가 있다. 무슨 차이지가 궁금해서 찾아봤는데 그것은 바로 Stateful과 Stateless의 차이였다. Stateful: widget.data Stateless: data 더보기
[Firebase] Firebase Storage Firebase Storage 사용법! ImagePicker package로 image를 가져오고 그 이미지를 File()에 넣어서 File 변수로 만들어준다. 중요!! 이미지를 업로드 할 때에는 reference가 필요하고 이미지를 가져올 때에는 URL로 가져올 수 있다. 이때도 reference가 필요하다. reference는 가져올려고 하는 파일의 경로를 말한다. File _image; Future getImage() async { final image = await ImagePicker().getImage(source: ImageSource.gallery); setState(() { _image = File(image.path); }); } /// basename으로 파일의 온전한 이름을 Get .. 더보기
[Firebase] Firebase usage example One-time Read - get() Collection 또는 document를 한번만 콜 하려면, Query.get or DocumentReference.get method를 사용하면 됩니다! class GetUserName extends StatelessWidget { final String documentId; GetUserName(this.documentId); @override Widget build(BuildContext context) { CollectionReference users = FirebaseFirestore.instance.collection('users'); return FutureBuilder( future: users.doc(documentId).get(), builder.. 더보기
[Firebase] Firebase property 정리 Reference? Qurey? Snapshot? 다음과 같은 도표를 참고하면 쉽게 이해할 수 있다. Collection Collection에서는 크게 3가지 방향으로 갈린다. 1-1. Query .orderBy(), where().. 을 통해서 Query를 만들고 .get()을 통해 서버통신으로 데이터를 가져온다. (.get()은 데이터를 한번만 가져오라는 Query이다) => Return 값은 QuerySnapshot 1-2. snapshot() 이 내용은 Real-time Read를 위한 Stream을 받아오는 함수이다. => Return 값은 Stream 이다. 1. QuerySnapshot => snapshot() 사용할 때 Collection으로 부터 Query, snapshot을 통해 받아온.. 더보기
[Firebase] IOS 연결하기 Firebase IOS 연결하기! 우선 Firebase 홈페이지로 이동합니다! 이동해서 아래와 같은 Screen이 나왔다면 시작하기를 눌러줍니다! 1. 앱 추가 Button에서 IOS를 눌러줍니다. IOS+ 라고 적혀진 아이를 클릭해주면 됩니다. 2. 안내에 따라서 다음과 같은 설정을 해줍니다. 2.1. App Package 입력 1) APP Pakakge는 아래 명령어로 확인 할 수 있습니다. $ open ios/Runner.xcworkspace 2) App developer ID : 필수는 아닙니다! 2.2. 구성파일 다운로드 1. GoogleService-Info.plist 다운로드 후 Runner/Runner 에 넣기 주의할 점은 반드시 Xcode를 통해서 넣어야 합니다. 2. Create Fo.. 더보기