-
Flutter-grapqhQL 인자 값 넣어서 쿼리보내기개발/flutter 2020. 10. 13. 20:09
인자값 쿼리에 넣어서 보내기
쿼리를 보낼때 쿼리에 인자값을 넣어줘서 보내줘야할때가있다.
다음은 장바구니에 상품을 추가하는 api 인데 어떤 상품을 어떤 조건으로 넣을건지 서버에게 알려줘야 하기때문에
productQuery를 넣어줘야한다.
String readAddCart(Map<String, dynamic> productQuery) => ''' mutation { addCart( input: $productQuery ) } ''';
input 값에는 이런값들이 들어가야한다.
Map<String, dynamic> toJson() { return <String, dynamic>{ 'additionalInfo': json.encode(additionalInfo), 'reserveDate': json.encode(reserveDate), 'productId': json.encode(productId), 'reserveTimeScheduleId': json.encode(reserveTimeScheduleId ?? ''), }; }
Product라는 모델을 정의했으며 그안에 toJson()메소드를 만들었다.
addCart 에 필요한 네개의 String 값을(날짜,id,시간id,추가정보) 묶어 json 형태로 반환하며
값을 json.encode() 로 감싼 이유는
String 값의 경우 값이 "" 쌍따옴표 안에 들어가야하기 때문이다.
{ additionalInfo:추가정보내용 }
이렇게 들어가면 추가정보내용 이 String 이 아니라 판단 되어 에러발생되어서 이렇게 보내져야한다.
{ additionalInfo:"추가정보내용" }
json.encode(additionalInfo)도 가능하지만
"$additionalInfo" 도 역시 가능하다.
reserveTimeScheduleId 의경우 optional 이긴 하나 null 값이 들어가면 안되고
"" 이렇게 빈 String이 쌍따옴표안에 들어가야한다.
따라서 reserveTimeScheduleId이 null 인경우 "" 가 들어가도록 했다.
이제 쿼리를 보낼때
final productQuery = <String, dynamic>{'product': product.toJson()};
이렇게 쿼리 인수값에들어갈 map타입 변수를 만들어 쿼리 안에 넣으면 된다.
전체 코드
class AddCartProvider { Future<bool> addCart(Product product) { return getGraphQLClient().query(_queryOptions(product)).then(_toAddCart); } QueryOptions _queryOptions(Product product) { final productQuery = <String, dynamic>{'orderProduct': product.toJson()}; return QueryOptions( fetchPolicy: FetchPolicy.networkOnly, documentNode: gql(readAddCart(productQuery)), ); } bool _toAddCart(QueryResult queryResult) { if (queryResult.hasException) { throw queryResult.exception; } final bool result = queryResult.data['addCart']; return result; } String readAddCart(Map<String, dynamic> productQuery) => ''' mutation { addCart( input: $productQuery ) } ''';
추후 포스팅
에러 핸들링하기
페이지 네이션 하기
'개발 > flutter' 카테고리의 다른 글
ios 빌드 에러 (0) 2020.12.14 Flutter - GraphQL 에러 처리 방법 (0) 2020.10.14 Flutter-graphQL 쿼리 리턴값 데이터 모델링하기 (0) 2020.10.12 Flutter - graphQL 인자값 넣어서 Mutation 하기 (0) 2020.10.06 Flutter - GraphQL 세팅 및 쿼리 하는방법 (0) 2020.09.29