Search code examples
flutterdartflutter-hive

Class won't generate g.dart file automatically


import 'package:flutter/material.dart';
import 'package:hive/hive.dart';

part 'person_model.g.dart';

@HiveType(typeId: 1)
class PersonModel extends HiveObject {
  @HiveField(0)
  int personID = UniqueKey().hashCode;

  @HiveField(1)
  String personName = "";

  @HiveField(2)
  double personWeight = 0.0;

  @HiveField(3)
  double personHeight = 0.0;

  @HiveField(4)
  double personBMI = 0.0;

  @HiveField(5)
  bool personHasGoodBMI = false;

  PersonModel();

  PersonModel.create(this.personID, this.personName, this.personWeight,
      this.personHeight, this.personBMI, this.personHasGoodBMI);
}

For some reason, when I run dart run build_runner build, the person_model.g.dart is not generated.

I get no errors, actually it gives me success but the file is nowhere to be found. It's the first time this happens to me, can I get any explanation?


Solution

  • Hi i solved this issue by changing your code like this

    import 'package:flutter/material.dart';
    import 'package:hive/hive.dart';
    
    part 'person_model.g.dart';
    
    @HiveType(typeId: 100)
    class PersonModel {
      @HiveField(0)
      int personID = UniqueKey().hashCode;
    
      @HiveField(1)
      String personName = "";
    
      @HiveField(2)
      double personWeight = 0.0;
    
      @HiveField(3)
      double personHeight = 0.0;
    
      @HiveField(4)
      double personBMI = 0.0;
    
      @HiveField(5)
      bool personHasGoodBMI = false;
    
      PersonModel(this.personID, this.personName, this.personWeight,
          this.personHeight, this.personBMI, this.personHasGoodBMI);
    }
    

    For generate the .g.dart files use flutter pub run build_runner build --delete-conflicting-outputs

    make sure that you fille is named as person_model.dart