Flutter
-
[Flutter] Flutter Hook에서 WebView가 포함된 비동기 함수를 useEffect에서 선언했을 때 나오는 Zone mismatch 에러에 대해서...Flutter 2024. 9. 3. 18:21
요즘 기존의 Stateful, Stateless, Consumer Widget... 등등을 HookWidget, HookConsumerWidget으로 수정하는 작업을 하고 있는데, 이때 발생한 Zone mismatch 에러에 대해서 정리해보려고 한다. 기존 코드import 'package:project_name/common/const/color.dart';import 'package:desktop_webview_window/desktop_webview_window.dart';import 'package:flutter/material.dart';class WebviewScreen extends StatefulWidget { const WebviewdScreen({super.key}); @overrid..
-
[Flutter] private 변수(_)에 대해서...Flutter 2023. 12. 20. 15:10
다른 객체지향 언어를 학습하며 private와 public에 대한 개념이 어느정도 잡혀있다 하더라도 Flutter 개발을 혼자 하다보면 언제 어느 시점에 _를 붙여야할지 고민될 때가 있습니다. 다른 사람들의 오픈소스나 강의의 참고 코드를 봐도 누구는 붙이고 누구는 안붙이고 강의 같은 경우는 편의상 private 선언은 안하는 경우도 많고해서 ... 더 헷갈리더라구요. 또 getter와 setter에 대해서도 학습할 필요를 느꼈구요. 그래서 언제 변수명 앞에 _를 붙여야 할지에 대해 찾아보던 중 잘 정리된 글이 있어 두고두고 보려고 저장하는 김에 공유합니다. https://medium.com/@Toglefritz/embracing-private-variables-in-flutter-5f7fe4983a36
-
[Flutter] Don't invoke 'print' in production code. 뜨는 이유Flutter 2023. 12. 18. 10:54
Andriod Studio로 Flutter 개발을 할 때 변수값 확인을 위해 print를 사용하면 노란 밑줄이 뜨면서 Don't invoke 'print' in production code. (Documentation) Try using a logging framework. 라는 경고문구를 보게 된다. 이는 analysis_options.yaml 파일에 선언되어있는 include: package:flutter_lints/flutter.yaml 패키지 때문에 뜨는 경고문인데, 이 패키지는 Dart & Flutter의 코딩 규칙, 스타일의 일관성 등을 위해 기본으로 설치된 패키지이다. 다시 돌아와서 print 경고문을 번역기로 돌려보면 프로덕션 코드에서 'print'를 호출하지 마세요. (문서) 로깅 프레임..
-
[Flutter] TextFormField 함수 정리Flutter 2023. 11. 14. 16:36
TextFormField는 TextField에 String을 입력 받아 무언가(저장, 전송, 유효성 검사 등)를 할 수 있는 위젯이다. Form(GlobalKey)이나 controller랑 같이쓰게 되니 함수들이 자꾸 헷갈려서 정리해 놓을려고 한다. 이런 느낌으로 선언해서 사용해 준다. initialValue - 초기값 설정 가능 maxLength - 최대 길이 정해주기 decoration - 꾸미기. 이것저것 꾸밀 수 있음. inputFormatters - 입력값을 필터링할 떄 사용. 숫자만 , 정규표현식, 화폐 단위 등등 가능 onChanged - 텍스트를 입력할 때 마다 호출되는 함수. onTap - TextFormField를 Tap하면 호출 onSaved - 입력된 Text에 어떤 행동을 하면 호..
-
[Dart] extends와 implements의 차이??Flutter 2023. 11. 2. 14:44
공통점 둘 다 class가 다른 class를 상속받을 때 사용한다. class A extends B{} class C implements D{} 차이점 Java 에서는 extends는 class가 class를 상속받을 때, implements는 interface를 상속받을 때 사용했는데 Dart에서는 조금 달라 정리해본다. Dart에서는 interface라는 키워드가 대신 이를 상속 받을때 extends로 하냐, implements로 하냐에 따라 부모 class 내의 method 내용을 채워야 하느냐 마느냐(재정의)에 차이를 둔다. Java에선 implements로 상속받으면 부모 interface의 method 안의 내용이 없기 때문에 자식 class에선 method안에 내용을 채워야 했다. Dart에..
-
[Dart] Dart에서의 static, const와의 차이점?Flutter 2023. 11. 1. 16:56
static static은 class 내에 귀속되어 고정되는 변수나 함수를 선언할 때 사용. 서로 다른 여러개의 인스턴스를 생성해도 static으로 지정한 값은 공유되어 참조한다. static을 사용한 변수는 내부에서도 this. 을 붙이지 않는다. static 키워드를 사용하여 생선한 method는 인스턴스를 생성하지 않고 직접 호출할 수 있다. = 좀 더 편리하게 사용하기 위해 사용 const class와는 상관없다. cosnt는 상수를 정의할 때 사용되고 런타임 때 변경 불가능하다. = 코드의 안정성을 위해 사용
-
[Dart] "toString"과 "as String" 차이?Flutter 2023. 10. 31. 13:10
"toString"과 "as String"은 애초에 전혀 비슷하지도 않은 다른 문법이다. 그냥 to랑 as 가 있어서 처음 보는 사람은 헷갈릴 여지가 있는 것 뿐. toString toString은 타입을 변환시켜주는 것이다. int a = 4; a.toString(); 하면 a가 String으로 변환돼어서 '4'가 되는 것 String을 다시 int로 변환시켜주고 싶다면 int.parse(a); as String 이건 그냥 as 뒤에 String이 붙은 것 뿐이다. String 뒤에 다른 어떤 class나 타입이 들어가도 상관없다. 그래서 dart에게 이건 String 타입이라고 알려주는 것 뿐 String a = '4'; final b = a as String; 이렇게 하면 a가 String이 아니면..
-
[Flutter] FocusNode 활용Flutter 2023. 10. 30. 15:52
TextField가 여러개 있다면, 원하는 Field에 Focus를 줄 수 있게하는 위젯이다. 보통 키보드의 엔터키를 누르거나, 다음 버튼을 터치했을 때 Cursor가 자동으로 넘어가게 할 때 유용하다. final FocusNode _focusNode = FocusNode(); 이렇게 선언 후 controller처럼 Textfield 하나 당 focusnode 하나를 할당해주면 된다. TextFormField( autovalidateMode: AutovalidateMode.always, autofocus: true, controller: _textEditingController, focusNode: _focusNode, decoration: InputDecoration( label: Text( 'Ente..