인프런 커뮤니티 질문&답변

김지현님의 프로필 이미지
김지현

작성한 질문수

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

OrderProvider 작업하기

죄송합니다. 오늘 마지막 질문 입니다^^;(해결됨)

작성

·

227

·

수정됨

0

나름 열심히 따라 갔는데, 또 결제하기 버튼 누르면 결제를 실패했다는 스냅카드만 계속 뜹니다. 그래서 print(e) 를 해서 원인을 물어보니,

type 'Null' is not a subtype of type 'String' in type cast

라고 나오는데요, 제가 오류를 못찾는 걸수도 있겠지만, 여러 영상을 다시 뒤로 샅샅이 찾아가며 원인을 찾는데 못찾겠습니다..

왜 다음 페이지로 넘어가지 않을까요? null값 때문이라면 어떻게 처리를 해야 할까요?

// order_provider.dart

import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:level2/order/model/post_order_body.dart';
import 'package:level2/user/provider/basket_provider.dart';
import 'package:uuid/uuid.dart';
import '../model/order_model.dart';
import '../repository/order_repository.dart';

final orderProvider =
    StateNotifierProvider<OrderStateNotifier, List<OrderModel>>(
  (ref) {
    final repo = ref.watch(orderRepositoryProvider);

    return OrderStateNotifier(
      ref: ref,
      repository: repo,
    );
  },
);

class OrderStateNotifier extends StateNotifier<List<OrderModel>> {
  final Ref ref;
  final OrderRepository repository;

  OrderStateNotifier({
    required this.ref,
    required this.repository,
  }) : super([]);

  Future<bool> postOrder() async {
    try {
      final uuid = Uuid();

      final id = uuid.v4();

      final state = ref.read(basketProvider);

      final resp = await repository.postOrder(
        body: PostOrderBody(
          id: id,
          products: state
              .map(
                (e) => PostOrderBodyProduct(
                  productId: e.product.id,
                  count: e.count,
                ),
              )
              .toList(),
          totalPrice: state.fold<int>(
            0,
            (p, n) => p + (n.count * n.product.price),
          ),
          createdAt: DateTime.now().toString(),
        ),
      );
      return true;

    } catch (e) {
      print(e);
      return false;

    }
  }
}

 ------------------------------------------------------

이것도 앱을 지웠다가 다시 까니까 갑자기 되네요;

반복될 가능성도 없진 않지만, 실제로 앱을 구현할 경우 이 문제가 계속 반복될 경우 그때마다 지웠다 다시 깔았다를 반복할 수 없을것 같은데.. 일단 이 문제는 이렇게 해결하고 넘어가기로 하겠습니다.^^;

답변 1

0

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

코드 변경을 했을때 hot restart 또는 hot reload를 진행 해주셔야합니다.

이런 문제의 경우 '실제 앱'을 제작 했을때 없는 문제입니다. 왜냐면 앱은 한번 빌드하면 똑같은 상태로 배포되기 때문입니다.

감사합니다!

김지현님의 프로필 이미지
김지현

작성한 질문수

질문하기