Hive: [Hive Generator] Failed assertion: boolean expression must not be null

Created on 3 Oct 2020  路  13Comments  路  Source: hivedb/hive

Steps to Reproduce
I'm trying to generate Adapters for my custom models. But I encounter an exception when I run my command :

flutter packages pub run build_runner build -v

[Hive Generator] Failed assertion: boolean expression must not be null

The thing is, I don't have any boolean in my models.

Here's some of the code that might be useful

user.dart

import 'package:flutter_ebook_app/models/playlist.dart';
import 'package:hive/hive.dart';


part 'user.g.dart';

@HiveType(typeId: 0)
class User extends HiveObject {
  @HiveField(0)
  final String email;

  @HiveField(1)
  final List<Playlist> followedPlaylists;

  @HiveField(2)
  final List<Playlist> playlists;

  @HiveField(3)
  final String accessToken;

  User(
      {this.email,
        this.playlists,
        this.followedPlaylists,
        this.accessToken});

  factory User.from_map(Map<String, dynamic> data, String accessToken) {
    return User(
      email: data['email'],
      playlists: Playlist.fromListOfMap(data['playlists']),
      followedPlaylists: Playlist.fromListOfMap(data['followed_playlists']),
      accessToken: accessToken,
    );
  }
}

playlist.dart

import 'package:flutter_ebook_app/models/feed.dart';
import 'package:flutter_ebook_app/models/article.dart';
import 'package:hive/hive.dart';

part 'playlist.g.dart';


@HiveType(typeId: 1)
class Playlist {
  @HiveField(0)
  final String name;

  @HiveField(1)
  final String public_uid;

  @HiveField(2)
  final String created_at;

  @HiveField(3)
  final String modified_at;

  @HiveField(4)
  final List<Feed> feeds;

  @HiveField(5)
  List<Article> articles;

  Playlist(
      {this.name,
      this.public_uid,
      this.created_at,
      this.modified_at,
      this.feeds});

  // easier access than looping each time through feeds and stuff
  List<Article> getArticles() {
    List<Article> results = new List<Article>();
    this.feeds.forEach((feed) {
      results.addAll(feed.articles);
    });
    this.articles = results;

    // order articles from recent to older
    this.articles.sort((b, a) => a.date.compareTo(b.date));
  }

  factory Playlist.from_map(Map<String, dynamic> data) {
    return Playlist(
        name: data['name'],
        public_uid: data['public_uid'],
        created_at: data['created_at'],
        modified_at: data['modified_at'],
        feeds:
            data['feeds'] != null ? data['feeds'].map((x) => Feed.from_map(x)).toList().cast<Feed>() : null,
    );
  }

  static List<Playlist> fromListOfMap(List<dynamic> data) {
    List<Playlist> playlists = List<Playlist>();
    data.forEach((element) {
      playlists.add(Playlist.from_map(element));
    });
    return playlists;
  }
}

feed.dart

import 'package:flutter_ebook_app/models/article.dart';
import 'package:hive/hive.dart';


part 'feed.g.dart';

@HiveType(typeId: 2)
class Feed {

  @HiveField(0)
  final String url;

  @HiveField(1)
  final List<Article> articles;

  Feed({this.url, this.articles});

  factory Feed.from_map(Map<String, dynamic> data) {
    return Feed(
        url: data['url'],
        articles: data['articles']
            .map((x) => Article.from_map(x))
            .toList()
            .cast<Article>());
  }
}

article.dart

import 'package:flutter_ebook_app/util/functions.dart';
import 'package:hive/hive.dart';


part 'article.g.dart';

@HiveType(typeId: 3)
class Article {
  @HiveField(0)
  final String title;

  @HiveField(1)
  final String link;

  @HiveField(2)
  final DateTime date;

  @HiveField(3)
  final String timeAgo;

  Article({this.title, this.link, this.date, this.timeAgo});

  factory Article.from_map(Map<String, dynamic> data) {
    return Article(
      title: data['title'], 
      link: data['link'],
      date: DateTime.parse(data['date']),
      timeAgo: beautifyDate(data['date']),
    );
  }
}

Some of my pubspec.yaml

dependencies:
  flutter:
    sdk: flutter
  hive_flutter: ^0.3.1
  hive: ^1.4.4
  hive_generator: ^0.7.0+2
  build_runner: ^1.10.0

Version

  • Platform: Windows 10
  • Flutter version: Flutter (Channel beta, 1.22.0-12.3.pre, on Microsoft Windows [version 10.0.18363.1082], locale fr-FR)
  • Hive version: [e.g. 0.5.0]

Here's the verbose stacktrace of my errors:

[SEVERE] hive_generator:hive_generator on lib/models/article.dart:

Failed assertion: boolean expression must not be null
package:analyzer/src/dart/element/display_string_builder.dart 252:9     ElementDisplayStringBuilder._writeNullability
package:analyzer/src/dart/element/display_string_builder.dart 152:5     ElementDisplayStringBuilder.writeInterfaceType
package:analyzer/src/dart/element/type.dart 840:13                      InterfaceTypeImpl.appendTo
package:analyzer/src/dart/element/type.dart 1696:5                      TypeImpl.getDisplayString
package:hive_generator/src/class_builder.dart 79:35                     ClassBuilder._cast
package:hive_generator/src/class_builder.dart 51:25                     ClassBuilder.buildRead
package:hive_generator/src/type_adapter_generator.dart 50:19            TypeAdapterGenerator.generateForAnnotatedElement
package:source_gen/src/generator_for_annotation.dart 53:30              GeneratorForAnnotation.generate
package:source_gen/src/builder.dart 303:33                              _generate
package:source_gen/src/builder.dart 79:15                               _Builder._generateForLibrary
package:source_gen/src/builder.dart 71:11                               _Builder.build
package:build                                                           runBuilder
package:build_runner_core/src/generate/build_impl.dart 485:19           _SingleBuild._runForInput.<fn>.<fn>.<fn>
package:build_runner_core/src/generate/performance_tracker.dart 302:15  _NoOpBuilderActionTracker.trackStage
package:build_runner_core/src/generate/build_impl.dart 483:23           _SingleBuild._runForInput.<fn>.<fn>
package:build_runner_core/src/generate/build_impl.dart                  _SingleBuild._runForInput.<fn>.<fn>
package:timing/src/timing.dart 222:44                                   NoOpTimeTracker.track
package:build_runner_core/src/generate/build_impl.dart 440:22           _SingleBuild._runForInput.<fn>
package:pool/pool.dart 127:28                                           Pool.withResource
package:build_runner_core/src/generate/build_impl.dart 436:17           _SingleBuild._runForInput
package:build_runner_core/src/generate/build_impl.dart 374:38           _SingleBuild._runBuilder.<fn>
dart:async                                                              Future.wait
package:build_runner_core/src/generate/build_impl.dart 373:36           _SingleBuild._runBuilder
package:build_runner_core/src/generate/build_impl.dart 319:20           _SingleBuild._runPhases.<fn>.<fn>
dart:async                                                              _completeOnAsyncReturn
package:build_runner_core/src/generate/build_impl.dart                  _SingleBuild._matchingPrimaryInputs

[SEVERE] hive_generator:hive_generator on lib/models/feed.dart:

Failed assertion: boolean expression must not be null
package:analyzer/src/dart/element/display_string_builder.dart 252:9     ElementDisplayStringBuilder._writeNullability
package:analyzer/src/dart/element/display_string_builder.dart 152:5     ElementDisplayStringBuilder.writeInterfaceType
package:analyzer/src/dart/element/type.dart 840:13                      InterfaceTypeImpl.appendTo
package:analyzer/src/dart/element/type.dart 1696:5                      TypeImpl.getDisplayString
package:hive_generator/src/class_builder.dart 79:35                     ClassBuilder._cast
package:hive_generator/src/class_builder.dart 51:25                     ClassBuilder.buildRead
package:hive_generator/src/type_adapter_generator.dart 50:19            TypeAdapterGenerator.generateForAnnotatedElement
package:source_gen/src/generator_for_annotation.dart 53:30              GeneratorForAnnotation.generate
package:source_gen/src/builder.dart 303:33                              _generate
package:source_gen/src/builder.dart 79:15                               _Builder._generateForLibrary
package:source_gen/src/builder.dart 71:11                               _Builder.build
package:build                                                           runBuilder
package:build_runner_core/src/generate/build_impl.dart 485:19           _SingleBuild._runForInput.<fn>.<fn>.<fn>
package:build_runner_core/src/generate/performance_tracker.dart 302:15  _NoOpBuilderActionTracker.trackStage
package:build_runner_core/src/generate/build_impl.dart 483:23           _SingleBuild._runForInput.<fn>.<fn>
package:build_runner_core/src/generate/build_impl.dart                  _SingleBuild._runForInput.<fn>.<fn>
package:timing/src/timing.dart 222:44                                   NoOpTimeTracker.track
package:build_runner_core/src/generate/build_impl.dart 440:22           _SingleBuild._runForInput.<fn>
package:pool/pool.dart 127:28                                           Pool.withResource
package:build_runner_core/src/generate/build_impl.dart 436:17           _SingleBuild._runForInput
package:build_runner_core/src/generate/build_impl.dart 374:38           _SingleBuild._runBuilder.<fn>
dart:async                                                              Future.wait
package:build_runner_core/src/generate/build_impl.dart 373:36           _SingleBuild._runBuilder
package:build_runner_core/src/generate/build_impl.dart 319:20           _SingleBuild._runPhases.<fn>.<fn>
dart:async                                                              _completeOnAsyncReturn
package:build_runner_core/src/generate/build_impl.dart                  _SingleBuild._matchingPrimaryInputs

[FINE] hive_generator:hive_generator on lib/util/router.dart:Running TypeAdapterGenerator
[SEVERE] hive_generator:hive_generator on lib/models/playlist.dart:

Failed assertion: boolean expression must not be null
package:analyzer/src/dart/element/display_string_builder.dart 252:9     ElementDisplayStringBuilder._writeNullability
package:analyzer/src/dart/element/display_string_builder.dart 152:5     ElementDisplayStringBuilder.writeInterfaceType
package:analyzer/src/dart/element/type.dart 840:13                      InterfaceTypeImpl.appendTo
package:analyzer/src/dart/element/type.dart 1696:5                      TypeImpl.getDisplayString
package:hive_generator/src/class_builder.dart 79:35                     ClassBuilder._cast
package:hive_generator/src/class_builder.dart 51:25                     ClassBuilder.buildRead
package:hive_generator/src/type_adapter_generator.dart 50:19            TypeAdapterGenerator.generateForAnnotatedElement
package:source_gen/src/generator_for_annotation.dart 53:30              GeneratorForAnnotation.generate
package:source_gen/src/builder.dart 303:33                              _generate
package:source_gen/src/builder.dart 79:15                               _Builder._generateForLibrary
package:source_gen/src/builder.dart 71:11                               _Builder.build
package:build                                                           runBuilder
package:build_runner_core/src/generate/build_impl.dart 485:19           _SingleBuild._runForInput.<fn>.<fn>.<fn>
package:build_runner_core/src/generate/performance_tracker.dart 302:15  _NoOpBuilderActionTracker.trackStage
package:build_runner_core/src/generate/build_impl.dart 483:23           _SingleBuild._runForInput.<fn>.<fn>
package:build_runner_core/src/generate/build_impl.dart                  _SingleBuild._runForInput.<fn>.<fn>
package:timing/src/timing.dart 222:44                                   NoOpTimeTracker.track
package:build_runner_core/src/generate/build_impl.dart 440:22           _SingleBuild._runForInput.<fn>
package:pool/pool.dart 127:28                                           Pool.withResource
package:build_runner_core/src/generate/build_impl.dart 436:17           _SingleBuild._runForInput
package:build_runner_core/src/generate/build_impl.dart 374:38           _SingleBuild._runBuilder.<fn>
dart:async                                                              Future.wait
package:build_runner_core/src/generate/build_impl.dart 373:36           _SingleBuild._runBuilder
package:build_runner_core/src/generate/build_impl.dart 319:20           _SingleBuild._runPhases.<fn>.<fn>
dart:async                                                              _completeOnAsyncReturn
package:build_runner_core/src/generate/build_impl.dart                  _SingleBuild._matchingPrimaryInputs

[FINE] hive_generator:hive_generator on lib/views/create_playlist.dart:Running TypeAdapterGenerator
[SEVERE] hive_generator:hive_generator on lib/models/user.dart:

Failed assertion: boolean expression must not be null
package:analyzer/src/dart/element/display_string_builder.dart 252:9     ElementDisplayStringBuilder._writeNullability
package:analyzer/src/dart/element/display_string_builder.dart 152:5     ElementDisplayStringBuilder.writeInterfaceType
package:analyzer/src/dart/element/type.dart 840:13                      InterfaceTypeImpl.appendTo
package:analyzer/src/dart/element/type.dart 1696:5                      TypeImpl.getDisplayString
package:hive_generator/src/class_builder.dart 79:35                     ClassBuilder._cast
package:hive_generator/src/class_builder.dart 51:25                     ClassBuilder.buildRead
package:hive_generator/src/type_adapter_generator.dart 50:19            TypeAdapterGenerator.generateForAnnotatedElement
package:source_gen/src/generator_for_annotation.dart 53:30              GeneratorForAnnotation.generate
package:source_gen/src/builder.dart 303:33                              _generate
package:source_gen/src/builder.dart 79:15                               _Builder._generateForLibrary
package:source_gen/src/builder.dart 71:11                               _Builder.build
package:build                                                           runBuilder
package:build_runner_core/src/generate/build_impl.dart 485:19           _SingleBuild._runForInput.<fn>.<fn>.<fn>
package:build_runner_core/src/generate/performance_tracker.dart 302:15  _NoOpBuilderActionTracker.trackStage
package:build_runner_core/src/generate/build_impl.dart 483:23           _SingleBuild._runForInput.<fn>.<fn>
package:build_runner_core/src/generate/build_impl.dart                  _SingleBuild._runForInput.<fn>.<fn>
package:timing/src/timing.dart 222:44                                   NoOpTimeTracker.track
package:build_runner_core/src/generate/build_impl.dart 440:22           _SingleBuild._runForInput.<fn>
package:pool/pool.dart 127:28                                           Pool.withResource
package:build_runner_core/src/generate/build_impl.dart 436:17           _SingleBuild._runForInput
package:build_runner_core/src/generate/build_impl.dart 374:38           _SingleBuild._runBuilder.<fn>
dart:async                                                              Future.wait
package:build_runner_core/src/generate/build_impl.dart 373:36           _SingleBuild._runBuilder
package:build_runner_core/src/generate/build_impl.dart 319:20           _SingleBuild._runPhases.<fn>.<fn>
dart:async                                                              _completeOnAsyncReturn
package:build_runner_core/src/generate/build_impl.dart                  _SingleBuild._matchingPrimaryInputs



Thank you for your help guys 馃榿

bug

Most helpful comment

Fixed in v0.8.1

dev_dependencies:
  hive_generator: ^0.8.1

I tested with complex models and it worked.

All 13 comments

I got it working by downgrading to hive_generator: 0.7.2
The problem is probably somewhere in the latest release.

I got it working by downgrading to hive_generator: 0.7.2
The problem is probably somewhere in the latest release.

Actually I think the issue is related to analyzer package but I'm not sure. I have to upgrade analyzer because latest version of the other packages are not compatible with the version hive uses. I'll look at this issue soon.

Thanks for reporting btw.

Just published v0.8.0 which is compatible with analyzer >= 0.40.0

dev_dependencies:
  hive_generator: ^0.8.0

I am also experiencing this issue using:
hive: ^1.4.4+1
hive_flutter: ^0.3.1

dev_dependencies:
hive_generator: ^0.8.0
build_runner: ^1.10.1

I tried with hive_generator: ^0.8.0 one of my model has been generated (article.dart, the one with only primitives fields).

I got it working by doing like @Dranac suggested by using hive_generator: 0.7.2

I tried with hive_generator: ^0.8.0 one of my model has been generated (article.dart, the one with only primitives fields).

I got it working by doing like @Dranac suggested by using hive_generator: 0.7.2

Others aren't generated? Or what happened exactly? Is there any errors or something else might help. I think "Failed assertion" error should be solved.

Others are not generated and I still got the same error in the title with Boolean

Hi all,
same bug/issue message here. Tested with hive_generator: ^0.8.0 and hive_generator: ^0.7.2. Nothing works for me. Build_runner doesn't matter. I use flutter version 1.22.0 stable. Only models with primitives types are created.
To reproduce, create class A and class B with a annotated list of B found in A. Build_runner will fail with the error: Failed assertion: boolean expression must not be null, [SEVERE] hive_generator:hive_generator on lib/models/A.dart

List< String > cannot generate by hive generator and same issue [Hive Generator] Failed assertion: boolean expression must not be null

Fixed in v0.8.1

dev_dependencies:
  hive_generator: ^0.8.1

I tested with complex models and it worked.

hive_generator: ^0.8.1 also works for me. Thanks!

馃槄 I'm glad this issue was fixed finally.

I confirm, update to hive_generator: ^0.8.1 fixed the issue.

Thank you @TheMisir

Was this page helpful?
0 / 5 - 0 ratings

Related issues

maxim-saplin picture maxim-saplin  路  3Comments

Ferdzzzzzzzz picture Ferdzzzzzzzz  路  3Comments

azilvl picture azilvl  路  3Comments

yaymalaga picture yaymalaga  路  4Comments

rupamking1 picture rupamking1  路  3Comments