freezed icon indicating copy to clipboard operation
freezed copied to clipboard

Globally defining generic_argument_factories apparently doesn't work?

Open AlexanderFarkas opened this issue 1 year ago • 0 comments

In that case it works only if fromJson is an arrow function:

import 'package:freezed_annotation/freezed_annotation.dart';

part 'data.freezed.dart';
part 'data.g.dart';

@Freezed(genericArgumentFactories: true)
class Data<T> with _$Data<T> {
  const factory Data({
    required T data,
  }) = _Data<T>;

  factory Data.fromJson(Map<String, dynamic> json, T Function(Object?) fromJsonT) => _$DataFromJson(json, fromJsonT);
}

Also, this code produces build_runner error, though generic_argument_factories: true defined globally:

import 'package:freezed_annotation/freezed_annotation.dart';

part 'data.freezed.dart';
part 'data.g.dart';

@freezed
class Data<T> with _$Data<T> {
  const factory Data({
    required T data,
  }) = _Data<T>;

  factory Data.fromJson(Map<String, dynamic> json, T Function(Object?) fromJsonT) => _$DataFromJson(json, fromJsonT);
}

My build.yaml:

targets:
  $default:
    builders:
      freezed:
        options:
          generic_argument_factories: true
          to_json: false

Env:

deps: 
freezed_annotation: ^2.1.0
json_annotation: ^4.7.0

dev deps:
freezed: ^2.1.1
json_serializable: ^6.4.1
build_runner: ^2.2.1

AlexanderFarkas avatar Oct 07 '22 18:10 AlexanderFarkas