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
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 馃榿
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.0one 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
Most helpful comment
Fixed in v0.8.1
I tested with complex models and it worked.