тип 'int' не является подтипом типа '(int) => void' - PullRequest
0 голосов
/ 07 марта 2020

Я пытаюсь использовать псевдоним, используя typedef. Вот объявление

typedef OnPosterCallBack = void Function (int movieId);

Я хотел бы использовать этот обратный вызов на onTap() как onTap: () => onPosterCallBack(movieItems.movieId).

Мой виджет сетки выглядит так:

, который используется в:

Widget build(BuildContext context) {
    final MoviesBloc bloc = BlocProvider.of<MoviesBloc>(context);
    return StreamBuilder<MoviesViewModel>(
      stream: bloc.moviesStream,
      builder: (context, snapshot) {
        if (snapshot.hasData) {
          if (snapshot.data != null) {
            return buildGrid(snapshot.data, (movieId) {
              bloc.selectedMovieModelStream.listen(movieId);
              Navigator.pushReplacement(
                context,
                MaterialPageRoute(
                      builder: (context) => MovieDetailsScreen()));
            });
          } else {
            return Center(
              child: Text('No Image Found'),
            );
          }
        }
        return Center(child: CircularProgressIndicator());
      },
    );
  }

Я хотел бы перейти на страницу подробностей mov ie и отправить movieId следующему виджету, чтобы я мог получить значение, требуемое для mov ie подробный запрос.

Я отправляю mov ie id из блока c, а именно:

      PublishSubject<int>();
  Stream<int> get selectedMovieModelStream =>
      _selectedMovieIDPipe.stream;

  MoviesBloc({DiscoverMoviesService discoverMoviesService}) {
    _discoverMoviesService = discoverMoviesService ??= DiscoverMoviesService();
    _selectedMovieIDPipe.listen(_selectedMovieModel);
  }

  _selectedMovieModel(int movieId) {
    if (_model != null) {
      var movies = _model.movies.expand((itemId) => _model.movies).toList();
      _model.movies.first = movies.firstWhere((movie) => movie.movieId == movieId);
    }
  }

Как устранить следующую ошибку:

The following assertion was thrown while handling a gesture: type 'int' is not a subtype of type '(int) => void'

...