20

In my app, I use freezed with json_serializable. In the folder, where I put all my data models a lot of generated files, like model.g.dart, model.freeezed.dart. Is there any possibility to move all generated files like that to a separate folder in the project, like generated?

1
  • Did you find the way to do that? Commented Sep 6, 2022 at 18:22

2 Answers 2

6

Here's working example from stackoveflow:

Basically create build.yaml file like this, it will generate files in generated folder:

targets:
  $default:
    builders:
      source_gen|combining_builder:
        generate_for:
          - lib/**.dart
        options:
          build_extensions:
            '^lib/{{}}.dart': 'lib/generated/{{}}.g.dart'
      freezed|freezed:
        enabled: true
        options:
          build_extensions:
            '^lib/{{}}.dart': 'lib/generated/{{}}.freezed.dart'

Don't forget to add generated to part.

import 'package:freezed_annotation/freezed_annotation.dart';

part 'generated/person.g.dart';
part 'generated/person.freezed.dart';

@freezed
class Person with _$Person {
  const factory Person({
    required String firstName,
    required String lastName,
    required int age,
  }) = _Person;

  factory Person.fromJson(Map<String, Object?> json)
  => _$PersonFromJson(json);
}

5

Accordint to the build_runner documentation

flutter pub run build_runner build --output <dirname>

or

flutter pub run build_runner build --output models:<directory name>

to output only the models directory

4
  • Can't figure out how to use it. I have file lib/model.dart and I want file model.g.dart to be inside /lib/adapters/ directory, but build --output adapters creates packages in the root of my project with test, packages etc...
    – anber
    Commented Jan 25, 2023 at 11:48
  • @anber did you try to pass /lib/adapters instead of adapters? Commented Jan 27, 2023 at 6:18
  • Yes, I tried lib/adapters, /lib/adapters, ./lib/adapters but was not successful
    – anber
    Commented Jan 27, 2023 at 8:48
  • This creates an entire project inside the output folder and not just the generated files Commented Nov 2, 2023 at 20:28

Not the answer you're looking for? Browse other questions tagged or ask your own question.