작성
·
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를 진행 해주셔야합니다.
이런 문제의 경우 '실제 앱'을 제작 했을때 없는 문제입니다. 왜냐면 앱은 한번 빌드하면 똑같은 상태로 배포되기 때문입니다.
감사합니다!