본문 바로가기

전체 글

[Widget] TextField, TextFormField (validate) 우선 TextField 와 TextFormField의 다른 점은 바로 FormKey를 사용해서 validate를 check 할 수 있냐 없냐이다. 코드를 통해 어떻게 Validate를 처리하는지 알아보자 어떻게 validate를 처리할까? 필요한건 우선 - GlobalKey key - Form widget - validate property @override Widget build(BuildContext context) { return DefaultAppbarLayout( child: Form( key: this.formKey, child: Padding( padding: EdgeInsets.all(16.0), child: Column( children: [ renderTextFormField( labe.. 더보기
[FIREBASE] 보안 규칙 설정 Cloud Firebase 보안 규칙은 악의적인 사용자로부터 데이터를 보호한다. 이를 통해 모든 사용자의 엑세스를 거부할 수 있고, 규칙에 따라 모든 사용자에게 포괄적인 엑세스 권한을 부여하는 것도 가능하다. 가장 좋은 솔류션 😀 - 인증된 사용자 엑세스 Cloud Firestore 보안 규칙에서 사용자의 로그인 여부를 확인하지만 해당 인증을 기반으로 액세스를 추가로 제한하지 않는 경우가 있습니다. 규칙 중 하나라도 auth != null이 포함되어 있으면 로그인한 사용자에게 데이터에 대한 액세스 권한을 부여할지 확인하세요. service cloud.firestore { match /databases/{database}/documents { // Allow only authenticated content.. 더보기
[PAKAGE] Google_fonts Google_fonts pakage는 다양하고 이쁜 구글의 폰트들을 무료로 사용할 수 있게 해준다..!! (너무 좋고..) 그렇다면! 코드를 통해서 사용법에 대해서 알아보자!! Text에서 사용하기 아래와 같이 바로 적용할 수 있다. Text( 'This is Google Fonts', style: GoogleFonts.lato( textStyle: Theme.of(context).textTheme.headline4, fontSize: 48, fontWeight: FontWeight.w700, fontStyle: FontStyle.italic, ), ), Global에서도 사용하고 싶지 않을까?? Global에서 사용하기 - AppTheme MaterialApp( theme: ThemeData( text.. 더보기
[FIREBASE] IOS, Android Firebase ERROR 없이 한번에 연결하기 지금까지 수많은 오류와 해결책을 찾은 끝에 드디어 오류없이 Firebase를 바로 연결할 수 있는 방법을 찾았다.. 크게 다른건 없고, Firebase에 APP 등록할 때 기본적으로 했던 절차는 따른다. 그리고 나서 이걸 해준다. (정말 오류 때문에 많이 힘들었다.. 😂) firebase core 추가하기! 왜 인지는 모르겠지만 firebase core가 없을 때 맨날 오류가 떴었다. main 에서 코드 추가해주기 아마 이 코드는 전부 알고 있을 것 같다! 여기서 반드시 Firebase.initalizeApp() 을 해줘야 하고, (중요) widgetsFlutterBinding 뒤에 와야한다..!! void main() async { WidgetsFlutterBinding.ensureInitialized.. 더보기
[PAKAGE] 알아두면 좋을 pakage - jwt jwt란 보안 상으로 중요한 데이터들을 저장할 수 있는 DB? 라고 할 수 있다. [링크] https://pub.dev/packages/jwt_decode jwt_decode | Dart Package A easy dart package to decode JSON Web Tokens, and to check and give its expiry dates pub.dev 더보기
[Widget] WillPopScope 휴대폰을 하다보면 Back Key or Button을 눌러서 이전 페이지로 넘어갈 때가 많은데, Flutter에서는 해당 Action을 WillPopScope를 사용해서 막는다. 아래 예제를 보며 살펴보자 // Scaffold를 WillPopScope로 감싸는 것 import 'package:flutter/material.dart'; void main() { runApp( MaterialApp(home: MyApp()) ); } class MyApp extends StatefulWidget { @override _MyAppState createState() => _MyAppState(); } class _MyAppState extends State { String _msg = 'Welcome to Wil.. 더보기
[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.. 더보기