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

종마루님의 프로필 이미지

작성한 질문수

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

Restaurant Pagination - 4

restaurant_provider 부분에서 에러가 발생합니다.

24.08.23 18:24 작성

·

37

0

final resp = await repository.paginate(
  paginationParams: paginationParams,
);

해당 부분에서
The argument type 'PaginationParams' can't be assigned to the parameter type 'PaginationParams? 가 발생하는데요 타입이 불일치 하다는 것 같은데
제가 repository의 paginate 코드랑 pagination_params 코드도 다시 확인해 보고 강사님 깃에 올라온 코드랑 비교도 해봤는데 왜 에러가 발생하는지 모르겠네요
paginationParams: paginationParams!,
paginationParams: paginationParams ?? const PaginationParams(),
이런식으로 바꿔봐도 똑같습니다.
아래는 제 repository 및 pagination_params 코드입니다.

import 'package:basic_ui/common/dio/dio.dart';
import 'package:basic_ui/common/model/pagination_params.dart';
import 'package:basic_ui/common/model/cursor_pagination_model.dart';
import 'package:basic_ui/restaurant/model/restaurant_detail_model.dart';
import 'package:basic_ui/restaurant/model/restaurant_model.dart';
import 'package:dio/dio.dart' hide Headers;
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:retrofit/http.dart';

import '../../common/const/data.dart';

part 'restaurant_repository.g.dart';

final restaurantRepositoryProvider = Provider<RestaurantRepository>(
  (ref) {
    final dio = ref.watch(dioProvider);
    final repository =
        RestaurantRepository(dio, baseUrl: 'http://$ip/restaurant');

    return repository;
  },
);

@RestApi()
abstract class RestaurantRepository {
  factory RestaurantRepository(Dio dio, {String baseUrl}) =
      _RestaurantRepository;

  @GET('/')
  @Headers({
    'accessToken': 'true',
  })
  Future<CursorPagination<RestaurantModel>> paginate({
    @Queries() PaginationParams? paginationParams = const PaginationParams(),
  });

  @GET('/{id}')
  @Headers({
    'accessToken': 'true',
  })
  Future<RestaurantDetailModel> getRestaurantDetail({
    @Path() required String id,
  });
}
import 'package:json_annotation/json_annotation.dart';

part 'pagination_params.g.dart';

@JsonSerializable()
class PaginationParams {
  final String? after;
  final int? count;

  const PaginationParams({
    this.after,
    this.count,
  });

  PaginationParams copyWith({
    String? after,
    int? count,
  }) {
    return PaginationParams(
      after: after ?? this.after,
      count: count ?? this.count,
    );
  }

  factory PaginationParams.fromJson(Map<String, dynamic> json) =>
      _$PaginationParamsFromJson(json);

  Map<String, dynamic> toJson() => _$PaginationParamsToJson(this);
}

답변 1

0

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

2024. 08. 24. 09:07

안녕하세요!

에러 메세지를 봤을때는 nullable이 아닌 타입이 nullable인 위치에 들어가서 그런 것 같아요!

PaginationParams? <- 물음표가 필요한 위치가 있는 것 같은데 에러 메세지에 정확한 위치가 포함 돼 있을 것 같습니다!

확인 부탁드립니다!

감사합니다!