Флаттер не указан для класса, когда он указан - PullRequest
0 голосов
/ 16 ноября 2018

Я получаю

[dart] Получатель 'currentPickup' не определен для класса PickupEvent [undefined_getter]

ошибка в event.currentPickup:

import 'dart:async';

import 'package:bloc/bloc.dart';

import 'pickup.dart';
import '../../../models/models.dart';

class PickupBloc extends Bloc<PickupEvent, PickupState> {

  @override
  Stream<PickupState> mapEventToState(PickupState state, PickupEvent event) async* {
    if (state.isNotRunning) {
      stopwatch.start();
      timer = new Timer.periodic(new Duration(milliseconds: 200), updateTime);
      yield PickupState.running();
    }

    if (state.isRunning) {
      stopwatch.stop();
      timer.cancel();

      _pushPickup(event.currentPickup);

      yield PickupState.done();
    }
  }

Когда метод получения указан в классе PickupEvent и правильно импортирован в pickup.dart.

import '../../../models/models.dart';

abstract class PickupEvent {}

class ButtonPressed extends PickupEvent {
  final PickupModel currentPickup;

  ButtonPressed({
    @required this.currentPickup
  });
}

Есть идеи, что может вызвать это?

1 Ответ

0 голосов
/ 16 ноября 2018

Сообщение об ошибке верное.У ButtonPressed есть такой метод получения, но PickupEvent нет.

Вы можете добавить абстрактный метод получения к базовому классу

abstract class PickupEvent {
  PickupModel get currentPickup;
}

или привести как

_pushPickup((event as ButtonPressed).currentPickup);

, если вы уверены, что это будет ButtonPressed.

Вы также можете сделать

if(event is ButtonPressed) {
  _pushPickup(event.currentPickup);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...