#flutter #dart #flutter-hive #build-runner
#flutter #dart #flutter-улей #build-runner
Вопрос:
Я довольно новичок в flutter, поэтому дайте мне знать, если кому-нибудь понадобится дополнительная информация. Я пытался использовать Hive с моим приложением flutter. Я хочу сгенерировать пользовательский адаптер для класса, который я написал, под названием Product . Когда я запускаю «flutter packages pub run build_runner build», это то, что я получаю в качестве вывода:
NoSuchMethodError: The getter 'element' was called on null.
Receiver: null
Tried calling: element
[SEVERE] hive_generator:hive_generator on lib/Pages/Content Cards/productCard.dart:
NoSuchMethodError: The getter 'element' was called on null.
Receiver: null
Tried calling: element
[SEVERE] hive_generator:hive_generator on lib/Pages/Content Cards/featuredCard.dart:
NoSuchMethodError: The getter 'element' was called on null.
Receiver: null
Tried calling: element
[INFO] 19.8s elapsed, 5/14 actions completed.
[WARNING] hive_generator:hive_generator on lib/Models/product.dart:
Missing "part 'product.g.dart';".
[INFO] Running build completed, took 20.2s
[INFO] Caching finalized dependency graph...
[INFO] Caching finalized dependency graph completed, took 42ms
[SEVERE] Failed after 20.2s
pub finished with exit code 1
Это класс продукта: https://pastebin.com/0a0W18ep
Это productCard.dart: https://pastebin.com/gV7kP2YG
Это featuredCard.dart: https://pastebin.com/7tke6V17
Вот соответствующая часть моего pubsec.yaml:
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.3
http: ^0.12.2
hive: ^1.4.4
hive_flutter: ^0.3.1
# For OS-specific directory paths
path_provider: ^1.6.18
dev_dependencies:
build_runner:
flutter_test:
sdk: flutter
hive_generator:
dependency_overrides:
analyzer:
Я попытался изменить версии build_runner и analyzer и проверить, является ли объект product нулевым, прежде чем извлекать из него значения. К сожалению, ни один из них не сработал.
Ответ №1:
В сообщении об ошибке говорится, что вы Missing "part 'product.g.dart';".
.
Я проверил ваш код, и в нем этого не хватает. Добавьте этот отсутствующий оператор product.dart
.
import 'package:hive/hive.dart';
part 'product.g.dart';
@HiveType(typeId: 1)
class Product {
/// other code ...
}
Комментарии:
1. Спасибо! Он сгенерировал адаптер после добавления строки и повторного запуска команды. Должен ли я беспокоиться о том, что элемент-получатель был вызван при нулевом сообщении?
2. Рад помочь. Вы все еще получаете это сообщение?
3. Да, только часть нулевого сообщения. Приложение, похоже, работает нормально, когда я отлаживаю.
4. Я обнаружил аналогичную проблему здесь: github.com/hivedb/hive/issues/205 Не могли бы вы, пожалуйста, разобраться в этом
5. Я посмотрю на это. Еще раз спасибо за помощь!