inflearn logo
강의

講義

知識共有

[コードファクトリー] [中級] Flutter 本物の実戦!

OrderPaginationを操作する

주문 탭 에러

887

kyj1

投稿した質問数 9

0

안녕하세요. 수업 중 에러에 관해 질문 드립니다.

 

주문 탭 완성한 후에 에러가 발생했고, 아래와 같습니다.

에러관련 파일 : pagination_provider.dart

========Error=======

I/flutter ( 4231): FormatException: Invalid date format

I/flutter ( 4231): string

I/flutter ( 4231): #0 DateTime.parse (dart:core/date_time.dart:347:7)

 

관련 수업들 재차 확인해 보았고 오타는 없었습니다.

OrderModel 에서

final DateTime createdAt;

위의 것에서 에러가 나오는건지해서 제외시키고도 해보고,

intl 패키지 사용해서 DateFormatting을 다르게 해보았는데도 안되고 있습니다.

제가 확인해본바로는, OrderCard.fromModel빌드할때 에러가 발생하는것 같긴한데..OrderCard의 orderDate도 DateTime형식이고, OrderCard.fromModel의 crestaedAt도 DateTime형식인데 뭐가 문제인지 도무지 모르겠어서 여쭤봅니다.

하이브리드 앱 Flutter

回答 5

3

njw9108

이전 강의중에 Postman으로 Post/order API 테스트하는 부분이 있었는데 그때 createdAt 값을 string으로 넣어서 보내게 됩니다.

그래서 서버에는 string이란 값이 생기게 되구요.

해당 문제 발생하셨으면 서버 껐다가 다시 키면 됩니다 ㅎㅎ

0

nickelback

감사합니다. 해결됬네요

1

BO

class DataUtils {
  static DateTime stringToDateTime(String value) {
    print(value);
    if (value is DateTime) {
      return DateTime.parse(value);
    } else {
      return DateTime.now();
    }
  }

flutter: 2022-12-27 13:36:49.579553

flutter: 2022-12-27 13:31:31.762230

flutter: 2022-12-27 12:34:25.638001

flutter: string

DateUtils.stringToDateTime을 수정해보세요~

1

kyj1

아래 강의 6:22초 부근 보시면 createdAt을 DateTime으로 지정합니다.

https://www.inflearn.com/course/%ED%94%8C%EB%9F%AC%ED%84%B0-%EC%8B%A4%EC%A0%84/unit/124050?category=questionDetail&q=662968

이 데이터 실제로 서버에서 보낼때 value가 시간을 String으로 보내는게 아니고 그냥 'string'이라고 보내옵니다. 이걸 DateTime으로 바꾸는걸 Data.Utils에서 하니 자꾸 에러가 났었습니다.

강의 따라오면 저처럼 에러 보신분들이 많을것같은데..

저는 현재시간으로 orderDate에 바인딩해서 해결했습니다. 알려드리려고 대댓글 답니다.

0

bigdata

바꾸신 코드 올려주실 수 있나요?

저도 안되네요...

0

codefactory

안녕하세요.

제가 문제점을 살짝 이해 못한 것 같은데.

현재 서버에서는 시간을 String 형태로 보내주고 있는게 맞습니다.

그리고 OrderModel에서 파싱을 해주고있구요. 아래가 제가 저희가 같이 보고있는 코드로 예상됩니다.

@JsonSerializable()
class OrderModel implements IModelWithId {
  final String id;
  final List<OrderProductAndCountModel> products;
  final int totalPrice;
  final RestaurantModel restaurant;
  @JsonKey(
    fromJson: DataUtils.stringToDateTime,
  )
  final DateTime createdAt;

  OrderModel({
    required this.id,
    required this.products,
    required this.totalPrice,
    required this.restaurant,
    required this.createdAt,
  });

  factory OrderModel.fromJson(Map<String, dynamic> json) =>
      _$OrderModelFromJson(json);
}

JsonKey annotation을 사용해서 파싱을 해주고있기때문에

재대로 DateTime으로 파싱이 될것으로 예상됩니다.

어떤부분이 문제인지 조금 더 전후 설명을 해주시면 제가 다시 파악해보겠습니다.

0

BO

'마지막 데이터입니다 ㅠㅠ' 까지

DateTime.parse 해서 오류가 뜨는거 같아요.

0

g9191hc

'마지막 데이터~' 부분은 통신이랑 상관없이 자체적으로 그리는거라 상관없을거에요

문제 있으신 분들은 아마 서버 재시작하시면 왠만하면 해결되실거에요

이유야 여러가지이겠지만, 서버에 잘못 된 값이 저장되어 있느경우가 있어서 그런 것 같아요

0

kyj1

지금 봤습니다. 그..orderDate: DateTime.now() 이런식으로 orderDate에 데이트 형식을 받게하면 될겁니다. 서버에서 createdAt 데이터형식이 date타입이 아니니 그냥 현재시간으로 맞춰주면 될겁니다. 서버에서 고치든지 저희가 고치든지 해야되는데 서버에서 고칠 자신없으면 그냥 이렇게하시면 됩니다.

자동 패키지 임포트 관련 질문 드립니다.

0

646

1

초급 중급 마무리한 학생입니다.. 파베관련 질문 하나만 받아주실 수 있을까요

0

432

1

Pagination 질문드립니다

0

462

1

레이아웃에 대해서 궁금한 질문!

0

485

1

강의에 적용된 디자인 패턴이 뭔가요??

1

668

1

네스팅 방식으로 goRouter Go를 사용할때, 앱바타이틀이 정상적으로 표시되지 않는 문제

0

550

2

GoRouter return이 안됩니다.

0

592

1

UserModel 에서는 IModelWithId를 implements하지 않는 이유가 있나요?

-1

533

1

서버쪽 /user/me api에서 에러가 나서 확인해보니..

0

403

1

[에러] GoRouter 적용, 401 에러가 뜹니다

0

359

1

ref.read.update // state + 1

0

446

1

typedef itemBuilder 제네릭 관련 질문이 있습니다.

0

449

1

[상태관리] Riverpod을 쓰신 이유가 있으신가요?

0

666

1

Dio 질문드립니다.!

0

768

2

CursorPagination 캐스팅 관련 문의

0

406

1

CursorPagination 캐시팅 관련 문의

0

391

2

AuthRepository 클래스 token() 함수는 Dead Code 아닌가요?

0

358

1

Rating을 GET 요청할때 DioError가 발생합니다.

-1

603

1

Token 관련 질문 드립니다.

0

445

2

수업의 내용은 아니지만 궁금해서 여쭤봅니다.

0

571

1

refresh 토큰 재발급 요청에 대해서

0

1683

1

_App 클래스가 ConsumerWidget을 상속 받으면 에러가 생깁니다

0

2537

4

이번 플러터와 다트 업데이트에서

1

264

1

Dio로 api 요청 듣고 있는데 에러가 발생합니다 ㅜㅜ

0

1168

1