전체 글17 Flutter Bloc 패턴 기존에 프로바이더를 사용했던 플러터 구조에서 조금 더 AAC (안드로이드 아키텍처 컴포넌트 ) 와 비슷한 bloc 패턴으로 리펙토링을 하기로 결심하고 기존 프로젝트를 수정하게 되었다. Bloc 패턴 알아보기 우선 블록이라 함은 Business Logic of Components 의 줄임말으로 여러가지 상태관리 중 setState redux Provider Bloc InheritedWidget 하나로 개발자들간에 자주 쓰이는 패턴이다. 그전에 상태관리에 대해 상태가 무엇인지 왜 상태관리를 해야하는지 설명하도록 하겠습니다. 상태 (State) 쉽게 해석하자면 앱 내부의 데이터 라고 보면 될거같다. 유저가 어떤 행동을 취했을 때 내부에서 변하는 데이터가 상태(state)라고 합니다. 상태관리 (state ma.. 2020. 12. 20. Android RecyclerView Adatper 코드 리펙토링 안드로이드 RecyclerView.Adapter를 구현하다보면 되게 복잡하게 코드가 짜여진다. 다른 adpater를 만들 때 마다 계속해서 구현 해줘야하는 onCreateViewHolder 와 onBindViewHolder 아래 사진은 제가 지금까지 adpater를 구현 할 때 마다 했던 방식입니다. 사진으로 비교해봐도 두개 각기 다른 Adapter인데 계속해서 불필요한 class 를 분산 시키고 클래스 파일을 제작하였었습니다. 이를 어떻게하면 하나의 베이스인 adapter를 만들어 해 나갈까 생각하던 중 좋은 예시를 하나 발견하고 저만의 스타일로 바꿔 나가기 시작했습니다. 제가 참고한 블로그는 아래 링크에 남겨 두겠습니다. 우선 처음에는 RecyclerView.ViewHolder를 상속받은 BaseVi.. 2019. 12. 11. ViewModel에서 startActivity 적응 AAC중 하나인 MVP에서는 view 와 Presenter가 의존성이 있어서 뷰 에서 클릭 이벤트 발생 시 Presenter에서 이벤트 처리를 해주는 방식으로 구현을 하였다. 이렇게 넘어가도록 구현을 했지만 ViewModel 에서는 View와의 의존성을 제거한 상태여서 View에 데이터만 넘겨주는것이지 직접 관리를 하지 않는다 생각한다. 처음에는 이를 모르고 ViewModel에서 구현을 아래 그림처럼 하였다. 바로바로 사진을 못찍어서 급하게 만든 함수인데 원래 클릭하면 액티비티가 실행되고 Bundle과 같이 position값에 따른 id를 넘겨주는 코드였습니다 ㅜㅜ,, 아무래도 view와의 의존성을 제거 했는데 view를 관리해주는게 이상하다 싶어서 어떻게 LiveData로 관리를 할 수 없을까 하다가 .. 2019. 12. 10. 안드로이드 부족한 공부(R이 하는 역할, RecyclerView & ListView 차이점, viewmodel에서 mutableLiveData, LiveData 두는 이유) 안드로이드에 부족한 점이 많아 포스팅을 하게 되었다. - 우선 R이 하는 역할이다. 안드로이드 개발 시 항상 R.~ 이렇게 진행되는 코드를 매우 많이 봤다. 해당 R이라는 클래스가 어떤 역할을 하는지 상세하게 알아가기 위해 안드로이드 프로젝트의 External Library 안의 R클래스를 들어가보았다. 다음과 같이 많은 코드가 추가된것을 알 수 있다. 해당 추가된 코드들은 res 파일의 상세 디렉토리 style, string, dimen, color 등 이렇게 구분되어있고 각각 변수는 파일명을 따른다. 그로인해 res안에 임의의 디렉토리를 함부로 생성해서는 안된다. 해당 res 파일안의 디렉토리의 각각 변수는 int형으로 생성된다. - RecyclerView 와 ListView의 차이점. ListVie.. 2019. 12. 9. ViewModel 처음 사용 시 일어날 수 있는 에러 이번에 MVP 패턴말고 MVVM 패턴을 사용해봐야겠다고 마음먹고 첫 MVVM 패턴을 이용한 어플리케이션을 제작하기로 했다. MVVM패턴 이라하면은 Model, View, ViewModel 이렇게 나눠 지는데 Model 은 비즈니스 로직을 담당하고 View 는 UI 부분 ViewModel 은 View 에서 일어난 이벤트 처리하는 함수 등 여러가지가 포함되어있다. 처음 사용하던 MVVM 패턴 이었지만 MVP 패턴에서 Presenter 가 View의 상태를 아는것과 ViewModel은 View 의 상태를 모르는것 이 차이점만 있기 때문에 어렵기 않게 적용 시켜 나갔지만 ViewModel을 객체화 시키는데에서 문제가 생겼다. 본문 바로 아래 그림처럼 컴파일 에러는 아니지만 런타임 에서 오류가 계속 나는것이었다... 2019. 12. 6. TextEditingController 오류 해결 파이어베이스에서 불러온 데이터를 리펙토링 시켜서 플러터 클래스에 초기화 시킨다음 텍스트컨트롤러에다 저장을 시키려했지만 해당 오류가 계속 나왔다. 처음에 Provider를 상속하는 코드를 보니 해당 오류는 고칠 수 있었다. 1 -> 2로 코드를 고쳐 주었다.1. 2. 고쳐 주고나니 위에있는 에러는 해결이 되었지만 다른 에러가 나왔다 바로 아래 그림이 새로 나온 에러이다. 에러를 보니 위젯트리가 잠겨있는데 setState와 markNeedsBuild()가 호출 되었다는 것이었다. 빌드 안에서 setState나 markNeedsBuild를 호출한적이 없는데,, 그래서 stateful 위젯에 있는 didChangeDependencies 를 사용하기로 했다. didChangeDependencies이 언제 호출되는.. 2019. 11. 24. 이전 1 2 3 다음