Zeffry Reynando
Zeffry Reynando

Reputation: 3899

Flutter Freezed : Error: Getter not found:

I used Freezed package and need generating json . But when get response from API faced error type 'String' is not a subtype of type 'int' in type cast. This error known because my response from API String but i make integer in model

After searching to fixed solution , i found to solved this from this issue .But when build the application i get this error :

Launching lib\main.dart on Redmi Note 4 in debug mode...

Compiler message:
lib/src/network/models/utang/utang_model.freezed.dart:223:20: Error: Getter not found: '_stringToInt'.
@JsonKey(fromJson: _stringToInt, toJson: _stringFromInt)
                   ^^^^^^^^^^^^
lib/src/network/models/utang/utang_model.freezed.dart:223:42: Error: Getter not found: '_stringFromInt'.
@JsonKey(fromJson: _stringToInt, toJson: _stringFromInt)
                                         ^^^^^^^^^^^^^^

Compiler message:
lib/src/network/models/utang/utang_model.freezed.dart:223:20: Error: Getter not found: '_stringToInt'.
@JsonKey(fromJson: _stringToInt, toJson: _stringFromInt)
                   ^^^^^^^^^^^^
lib/src/network/models/utang/utang_model.freezed.dart:223:42: Error: Getter not found: '_stringFromInt'.
@JsonKey(fromJson: _stringToInt, toJson: _stringFromInt)
                                         ^^^^^^^^^^^^^^
Target kernel_snapshot failed: Exception: Errors during snapshot creation: null
build failed.

FAILURE: Build failed with an exception.

* Where:
Script 'C:\flutter\flutter\packages\flutter_tools\gradle\flutter.gradle' line: 882

* What went wrong:
Execution failed for task ':app:compileFlutterBuildDebug'.
> Process 'command 'C:\flutter\flutter\bin\flutter.bat'' finished with non-zero exit value 1

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 23s
Exception: Gradle task assembleDebug failed with exit code 1
Exited (sigterm)

Model

@freezed
abstract class UtangModel with _$UtangModel {
  @JsonSerializable(fieldRename: FieldRename.snake)
  @JsonKey(fromJson: _stringToInt, toJson: _stringFromInt)
  const factory UtangModel({
    String idUtang,
    UserGoogleModel pembertang,
    UserGoogleModel pengutang,
    int totalUtang,
    int sisaUtang,
    DateTime tglKembali,
    String status,
    String keterangan,
    String selfie,
    String ttd,
    DateTime createdDate,
  }) = _UtangModel;
  factory UtangModel.fromJson(Map<String, dynamic> json) => _$UtangModelFromJson(json);
  static int _stringToInt(String number) => number == null ? null : int.parse(number);
  static String _stringFromInt(int number) => number?.toString();
}

I missed something ?

Upvotes: 0

Views: 2725

Answers (1)

edmbn
edmbn

Reputation: 101

You have to indicate that this function is from the abstract class UtangModel:

@freezed
abstract class UtangModel with _$UtangModel {
  @JsonSerializable(fieldRename: FieldRename.snake)
  const factory UtangModel({
    String idUtang,
    UserGoogleModel pembertang,
    UserGoogleModel pengutang,
    @JsonKey(fromJson: UtangModel._stringToInt, toJson: UtangModel._stringFromInt)int totalUtang,
    int sisaUtang,
    DateTime tglKembali,
    String status,
    String keterangan,
    String selfie,
    String ttd,
    DateTime createdDate,
  }) = _UtangModel;
  factory UtangModel.fromJson(Map<String, dynamic> json) => _$UtangModelFromJson(json);
  static int _stringToInt(String number) => number == null ? null : int.parse(number);
  static String _stringFromInt(int number) => number?.toString();
}

Upvotes: 5

Related Questions