Получение «noSuchMethod error: элемент-получатель был вызван с нулевым значением». при использовании build_runner

#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. Я посмотрю на это. Еще раз спасибо за помощь!