목록flutter (27)
승상의 코딩 블로그

https://riverpod.dev/docs/providers/future_provider FutureProvider | Riverpod The content of this page may be outdated. riverpod.dev FutureProvider 는 Async 한 코드를 처리하기 위한 Provider 의 한 종류이다. (외부에서 상태를 제어한다면, AsyncNotifierProvider 를 사용하면 된다.) FutureProvider 는 아래의 상황에서 사용하기 좋다. 네트워크 요청 같은 비동기적인 동작을 하거나 데이터를 캐싱 할 때 (네트워크 요청을 다시 하지 않도록 값을 저장함) 비동기 동작의 상태를 핸들링할 때 (error, loading, success) 여러 비동기 값을 다른..

https://riverpod.dev/ko/docs/providers/state_provider StateProvider | Riverpod StateProvider is a provider that exposes a way to modify its state. riverpod.dev StateProvider 는 State(상태)를 변경을 지원해주는 Provider 의 한 종류이다. StateNotifer 를 작성하지 않아도 되는 StateNotifierProvider 의 단순화된 형태의 Provider 라고 생각하면 된다. 단순함이라고 하면 어떤 정도의 단순함을 의미하는 것일까? Riverpod 의 공식문서에 따르면 아래 상황에 StateProvider 사용을 추천한다. 필터링을 위해 사용할 Enum ..

필요할 때만 접근하기 위한 정보들은 Drawer 라는 공간에 위치시킨다. 이 공간에는 계정정보 등을 시현할 수도 있고, 특정 페이지로의 네이게이션이 가능하도록 정보를 추가할 수 있다. https://docs.flutter.dev/cookbook/design/drawer Add a drawer to a screen How to implement a Material Drawer. docs.flutter.dev 구현 Drawer 도 네비게이션 스택에 추가된다. 그러므로 Drawer 를 닫을 때, Navigator.pop(context) 을 사용한다. Expansion 위젯은 아래 링크를 참조하길 바란다. 2023.12.26 - [Flutter (플러터)] - [Flutter] 목록 펼치기 (서브 카테고리 만들..

한번에 페이지에 시현되는 정보가 너무 많으면, 원하는 정보를 찾기도 어려워 사용자에게 피로감을 주는 문제가 있다. 이러한 문제는 상위 카테고리를 만들어 각 항목들을 묶어줌으로써 개선할 수 있다. 카테고리로 묶어주는 보편적인 방법에는 드롭다운이 있다. 플러터에서는 ExpansionTile 을 사용하여 드롭다운 형태로 카테고리를 분류할 수 있다. https://api.flutter.dev/flutter/material/ExpansionTile-class.html ExpansionTile class - material library - Dart API A single-line ListTile with an expansion arrow icon that expands or collapses the tile to..
class Person { late String name; late int age; // Unnamed Constructor 는 하나만 생성 가능하다. Person(this.name, this.age); // Named Constructor Person.fromJson(Map data) { name = data['name']; age = data['age']; } } Unnamed/Named Constructor C++ 와 다르게 Dart 에서는 클래스의 이름을 가진 생성자(Constructor)는 하나만 존재할 수 있다. 추가로 Constructor 를 만들고 싶다면 Named Constructor 를 이용하자. (단, Named Constructor 는 상속되지 않으니 참고하길 바란다.) Named ..

flutter 에서 코드제너레이션(code generation) 을 위해 반복적으로 작성해야하는 코드들이 너무 많다. 이전에 포스팅한 freezed 패키지만 봐도 코드 제너레이션을 위해 작성해야하는 코드의 양이 좀 된다. 2023.08.22 - [Flutter (플러터)] - [Flutter] 불변객체와 내부 속성을 쉽게 만들어주는 freezed 패키지 [Flutter] 불변객체와 내부 속성을 쉽게 만들어주는 freezed 패키지 모델 클래스를 정의하는 것은 귀찮은 일이다. Json 을 받는 코드, 객체의 특정 속성만 변경하여 새로운 객체를 반환하는 코드 등 ... 클래스가 많아질수록 자동화하지 않으면 시간이 많이 걸릴 뿐 seungsang.tistory.com 너무 대중적이고 일반적이라서 vscode ..

모델 클래스를 정의하는 것은 귀찮은 일이다. Json 을 받는 코드, 객체의 특정 속성만 변경하여 새로운 객체를 반환하는 코드 등 ...클래스가 많아질수록 자동화하지 않으면 시간이 많이 걸릴 뿐 아니라 에러가 발생할 확률이 높아진다. 다행히 플러터에는 이러한 문제를 해결하기 위한 코드 제너레이션(code generation) 패키지가 존재한다. 코드 제너레이션은 코드의 일부를 자동으로 만들어주는 기술을 의미한다. 코드 제너레이션을 통해 반복된 코드를 자동으로 생성할 수 있다.https://pub.dev/packages/freezed freezed | Dart PackageCode generation for immutable classes that has a simple syntax/API without ..

플러터의 많은 라이브러리들이 코드 제너레이션(code generation)을 제공한다. 코드 제너레이션은 코드의 일부를 자동으로 만들어주는 기술을 의미한다. 코드 제너레이션을 통해 반복된 코드를 자동화하므로써 실수를 줄일 수 있다. 이를 통해 개발의 속도를 높일 수 있다. 문제 코드 제너레이션으로 만들어지는 파일로 인해, VSCODE 탐색기의 실제 사용하는 파일을 식별하기 어렵다. (detail.dart 와 review.dart 는 내가 작성한 파일이고 이외의 detail.freezed.dart, detail.g.dart, review.freezed.dart, review.g.dart 는 생성된 파일이다.) 그래서 내가 작성파일 아래에 생성된 파일을 숨기려고 한다. 설정 command + ,(콤마) 를..

플러터에서 TextFormField 에서 데이터를 가지고 오는 것과 간단한 플라스크 서버는 이전 포스팅을 참고하자. [Flutter (플러터)] - [Flutter] TextFormField 의 입력값 가져오기 [Flutter (플러터)] - 토큰 기능 테스트를 위한 간단한 Flask 서버 만들기 HTTP POST 요청을 쉽게 하기 위해, DIO 패키지를 설치하자 > flutter pub add dio # dio 설치 https://pub.dev/packages/dio dio | Dart Package A powerful HTTP networking package, supports Interceptors, Aborting and canceling a request, Custom adapters, Tran..

로그인을 위한 데이터를 전송하기 위해서는, 사용자가 입력한 값을 받아올 수 있어야 한다. 사용자의 입력은 TextFormField 위젯과 TextEditingController 를 사용하여 가져올 수 있다. 이를 위해서는 3가지 단계가 필요하다. TextEditingController 를 생성한다. 생성된 TextEditingController 를 TextFormField 에 설정한다. 입력 데이터를 사용할 때, TextEditiingController 에서 값을 가져온다. 1. TextEditingController 생성 state widget 에 Controller 를 생성한다. Controller 를 생성했으니 위젯이 해제될 때 같이 사라지도록 dispose 함수에서 같이 해제시켜준다. class ..