본문 바로가기
반응형

Frontend, Client/Flutter10

[Flutter] bloc을 이용한 상태 관리 1. Bloc이란?*bloc : Business Logic Componentbloc은 비즈니스 로직과 프레젠테이션 영역을 분리하기 위해 도입된 패턴이다. 계층을 분리함으로써 코드의 재사용성을 높이고, 테스트를 더 쉽게 진행할 수 있게 한다.bloc은 UI 이벤트를 받아 State를 변경한다.2. Bloc 패턴 작성과 사용a. bloc 생성이벤트와 bloc을 작성abstract class CounterEvent {}// eventclass CounterIncrementPressed extends CounterEvent {}// blocclass CounterBloc extends Bloc { CounterBloc() : super(0);} 처리하고자 하는 이벤트에 대한 이벤트 핸들러를 등록emit() :.. 2024. 7. 20.
[Flutter] 플러터 - 위젯(widget) 테스트 위젯 테스트 : https://flutter-ko.dev/docs/cookbook/testing/widget/introduction a. flutter_test 의존성 추가 근데 기본적으로 의존성이 걸려있어서 따로 추가할 필요가 없다. dev_dependencies: flutter_test: sdk: flutter b. 테스트할 위젯 생성 class MyWidget extends StatelessWidget { final String title; final String message; const MyWidget({ Key key, @required this.title, @required this.message, }) : super(key: key); @override Widget build(BuildCo.. 2022. 12. 9.
[Flutter] 플러터 - 다트 : ENUM 타입 알아보기(enumerated types) 기본 enum 사용 enum Color { red, green, blue } blue 옆에 콤마를 붙여도 가능하다. 참고로 이 콤마를 trailing commas라고 부르며, 복붙 시에 에러를 방지해주는 효과를 가진다고 한다. 확장된 enum 사용 Enum을 마치 클래스처럼 확장하여 사용할 수 있다. 몇가지 규칙만 준수하면 된다. 1. 인스턴스 변수는 final이어야 한다. 2. 생성자는 constant이어야 한다.(메모리에 한번만 올라가게 하려고 그런거 같음) 3. 팩토리 생성자는 오직 정의되어있는 인스턴스들 중 하나만을 리턴할 수 있다. 4. Enum 클래스가 자동적으로 extends 되어 있어서, 다른 클래스를 상속받을 수 없다. 5. index, hashCode, 동등성을 재정의(override).. 2022. 12. 9.
[Flutter] 플러터 - 다트 : 다양한 생성자 알아보기 생성자를 통한 파라미터 초기화 class Point { final double x; final double y; Point(this.x, this.y); } 네임드 생성자 const double xOrigin = 0; const double yOrigin = 0; class Point { final double x; final double y; //named constructor Point.origin() : x = xOrigin, y = yOrigin; } 상속 관계에서 생성자 활용 class Vector2d { final double x; final double y; Vector2d(this.x, this.y); } class Vector3d extends Vector2d { final double .. 2022. 12. 9.
[Flutter] 플러터 - 다트 : 함수 알아보기(optional parameter, named parameter 등등) 다트에서 제공하는 함수에 관한 여러가지 기능을 알아보자. a. optional parameter : 함수 호출 시 [ ] 안의 파라미터를 선택적으로 넣어주거나 생략할 수 있다. String say(String from, String msg, [String? device]) { var result = '$from says $msg'; if (device != null) { result = '$result with a $device'; } return result; } assert(say('Bob', 'Howdy') == 'Bob says Howdy'); assert(say('Bob', 'Howdy', 'smoke signal') == 'Bob says Howdy with a smoke signal'); 주.. 2022. 12. 9.
[Flutter] 플러터 - 다트 : 리스트(List) 다양한 기능 알아보기 아주 기본적인 리스트 개념은 생략하고, 다트에서 제공하는 리스트의 다양한 기능을 알아보자. spread operator var b = [4, 5]; var a = [1, 2, 3, ...b]; // a = [1,2,3,4,5]가 됨 assert(a[3] == 4); assert(a[4] == 5); null-aware spread operator 아래 코드에서 변수 list가 null이면 아무것도 추가되지 않는다. var list2 = [0, ...?list]; assert(list2.length == 1); collection if 리스트 안에서 if를 사용할 수 있다. var flag = true; var a = [1, 2, if(flag) 3]; print(a); //[1, 2, 3] collect.. 2022. 12. 9.
반응형