본문 바로가기

Flutter

[Flutter] 싱글톤 패턴에 대해서 알아보자! 싱글톤(SingleTon)이란? 보통의 경우에는 객체를 인스턴스화 시키면 하나의 인스턴스가 생기는데, 생성자를 호출할 때마다 인스턴스 1, 인스턴스 2, 인스턴스 3, .... 이런 식으로 여러 인스턴스가 생성자를 한번 호출할 때 마다 생기게 된다. 고로, 같은 객체이지만, 인스턴스 안에 멤버 변수들은 이름은 같아도 각각 다른 값을 부여받을 수 있다. 이를 방지하기 위해서 하나의 인스턴스를 만들어서 그 안에 멤버 변수들의 값을 공유하는 것이 싱글톤 패턴이다. 즉, 새로운 생성자를 만들디 않고, 딱 한 번만 인스턴스를 사용하여 하나의 생성자 값만을 가질 수 있다. 그러므로 최초에 생성된 단 하나의 생정자만 사용되고, 값이 있으면 원래 값으로 리턴해준다. Factory 싱글톤 패턴을 사용할 때 쓰는 예약어이.. 더보기
[PAKAGE] Shimmer Loading 시에 너무 좋은 Pakage 🔗 https://pub.dev/packages/shimmer shimmer | Flutter Package A package provides an easy way to add shimmer effect in Flutter project pub.dev 더보기
[Widget] Material Widget Material Widget은 property가 없는 여러 widget에 material widget이 가진 property를 넘겨줄 수 있다. Clipping Material widget은 shape, type, borderRadius 와 같은 property를 주입할 수 있다. Clipper 1. ClipOval 2. ClipRect 3. ClipRRect 4. ClipPath Default는 cilpBehavior는 Clip.none 이다. Clip.none VS Clip.none (x) Elevation Elevation을 줄 수도 있다! 투명도를 줄 수 있다! Ink Effect Material shows lnk effects implemented by InkFeatures like inkSpl.. 더보기
[Widget] MaterialStateProperty of Button ✔️ State 에 따라서 Button의 state에 맞는 시각적인 요소를 지정할 수 있다. Material Design에서 지정하고 있는 버튼의 상태 - enabled : 상호작용 가능한 버튼 상태 - pressed : 사용자가 탭 했을 때 - hover : 사용자가 마우스 커서를 상호작용 가능한 버튼 위에 올려두었을 때 - focus : 사용자가 키보드나 음성과 같은 입력 방법을 사용해서 강조표시한 상태 - disable : 상호작용 불가한 버튼 상태 State별로 버튼 시각적 요소 지정 1) MaterialStateProperty.resolvewith : State 별로 상태 변화를 지정할 수 있다. (개인적인 코드 방식) ElevatedButton( style: ButtonStyle( backgr.. 더보기
[GETX] GetX - 라우팅 관리 GetX의 주요 기능 중 하나인 Navigation ( Route 관리 ) 에 대해서 알아보자. 우선 GetX를 적용하기 위해서 GetMaterialApp 으로 Widget을 감싸줘야 한다. @override Widget build(BuildContext context) { return GetMaterialApp( title: 'Flutter GetX', home: HomePage() ); } #1. 기본 Navigation 기존의 Navigator에 비하면 굉장히 직관적이고 싶게 바꼈다. Context도 필요없다 개꿀. Get.to(FirstPage()); // 넘어가기 Get.back(); // 뒤로 가기 Get.off(); // 이동하면서 바로 전 페이지 Stack에서 삭제 Get.offAll(Ho.. 더보기
[GETX] GetX- 종속성 관리: Binding Binding Binding 관리는 의존성, 종속성 관리라고 부른다. 효율적인 메모리를 관리하기 위해서는 인스턴스 시킨 객체를 사용하고, 사용하지 않을 때는 없애주는 과정이 필요하다. 이러한 과정을 효율적으로 도와줄 수 있는게 Binding이다. Getx에서는 Binding을 지원하고 있으며 굉장히 효율적이고 간단하게 Binding을 관리 할 수 있다! 그럼 어떻게 Binding 관리를 할 수 있을까? #1. Page를 이동할 때 binding을 함께 넘겨준다. 페이지를 이동할 때 binding을 함께 넘겨줄 수 있다. 코드를 보면서 살펴보자! Get.to( GetPutPage(), binding: BindingsBuilder(() { Get.put(DependencyController()); }), ).. 더보기
[PAKAGE] auto_size_text Container 안에 Text를 입력할 때 maxLine에 맞도록 자동으로 Text의 사이즈를 줄여주는 Package이다. [링크] 🔗 https://pub.dev/packages/auto_size_text#-readme-tab- auto_size_text | Flutter Package Flutter widget that automatically resizes text to fit perfectly within its bounds. pub.dev 더보기
[Widget] Is there a way to load async data on initState method? 예를 들어 API를 처음 시작할 때 불러온다든가 (물론.. 함수로 빼주면 되긴하지만..) 할 때에 initState 안에서 async, await를 사용하고 싶을 때가 있을 것이다. 하지만 initState에는 async, await를 사용할 수 없기 때문에 다른 방법을 찾아야 하는데 그것이 가능하도록 하는 방법을 이번 주제로 다루려고 한다. 첫 번째 방법! : WidgetsBinding.instance.addPostFrameCallback() + Future 함수 코드로 살펴보자! (위에서도 언급했지만 함수를 따로 만들어서 할 수 있는 방법이 있다!) 아래에서는 setState를 사용하기 때문에 WidgetsBinding.instance.addPostFrameCallback 를 붙여주었다. 왜냐하면 b.. 더보기