Code Generation
Flutter Server Box heavily uses code generation for models, state management, and serialization.
When to Run Code Generation
Section titled “When to Run Code Generation”Run after modifying:
- Models with
@freezedannotation - Classes with
@JsonSerializable - Hive models
- Providers with
@riverpod - Localizations (ARB files)
Running Code Generation
Section titled “Running Code Generation”# Generate all codedart run build_runner build --delete-conflicting-outputs
# Clean and regeneratedart run build_runner build --delete-conflicting-outputs --cleanGenerated Files
Section titled “Generated Files”Freezed (*.freezed.dart)
Section titled “Freezed (*.freezed.dart)”Immutable data models with union types:
@freezedclass ServerState with _$ServerState { const factory ServerState.connected() = Connected; const factory ServerState.disconnected() = Disconnected; const factory ServerState.error(String message) = Error;}JSON Serialization (*.g.dart)
Section titled “JSON Serialization (*.g.dart)”Generated from json_serializable:
@JsonSerializable()class Server { final String id; final String name; final String host;
Server({required this.id, required this.name, required this.host});
factory Server.fromJson(Map<String, dynamic> json) => _$ServerFromJson(json); Map<String, dynamic> toJson() => _$ServerToJson(this);}Riverpod Providers (*.g.dart)
Section titled “Riverpod Providers (*.g.dart)”Generated from @riverpod annotation:
@riverpodclass MyNotifier extends _$MyNotifier { @override int build() => 0;}Hive Adapters (*.g.dart)
Section titled “Hive Adapters (*.g.dart)”Auto-generated for Hive models (hive_ce):
@HiveType(typeId: 0)class ServerModel { @HiveField(0) final String id;}Localization Generation
Section titled “Localization Generation”flutter gen-l10nGenerates lib/generated/l10n/ from lib/l10n/*.arb files.
- Use
--delete-conflicting-outputsto avoid conflicts - Add generated files to
.gitignore - Never manually edit generated files