Есть идеи, почему это происходит во Флаттере? - PullRequest
0 голосов
/ 08 апреля 2020

У меня есть отдельный класс, чтобы можно было использовать улей, и я хочу получить список API, который я использую, но когда я звоню своему классу, который получает список, он дает мне эту ошибку enter image description here

class PersistStorage {
  sendData(List<Movie> movie) async {
    var box = await Hive.openBox('data');
    box.put("movies", movie);
  }

}

FutureBuilder, где я вызываю мой класс:

class GridViewMovies extends StatefulWidget {
  double _crossAxisSpacing = 15, _mainAxisSpacing = 12, _aspectRatio = 1;
  PersistStorage storage;


  GridViewMovies({Key key}) : super(key: key);

  @override
  _GridViewMoviesState createState() => _GridViewMoviesState();
}

class _GridViewMoviesState extends State<GridViewMovies> {
  BlocMovies movieBloc;


  @override
  Widget build(BuildContext context) {
    movieBloc = BlocProvider.of(context);

    return FutureBuilder(
        future: movieBloc.getlistMovies(),
        builder: (BuildContext context, AsyncSnapshot<MoviesModel> snapshot) {
          switch (snapshot.connectionState) {
            case ConnectionState.waiting:
              return Center(
                child: CircularProgressIndicator(),
              );
              break;
            case ConnectionState.none:
              return Center(
                child: CircularProgressIndicator(),
              );
              break;

            case ConnectionState.done:
              if (snapshot.data == null) {
                return Center(child: Text("Intenta mas tarde"));
              }
              //here call my function .......................
              widget.storage.sendData(snapshot.data.items);


              return Center(
                child: movieList(context, snapshot.data.items),
              );
              break;

            case ConnectionState.active:
              if (snapshot.data == null) {
                return Center(child: Text("Intenta mas tarde"));
              }
              return Center(
                child: movieList(context, snapshot.data.items),
              );

              break;
            default:
          }
        });
  }

и потому что класс служит мне только для вызова моей функции, но выдает мне эту ошибку, любую идею, чтобы решить это проблема?

1 Ответ

0 голосов
/ 08 апреля 2020

вы инициализировали свой объект хранения в виджете, я не вижу инициализации в коде, который вы добавили здесь.

class GridViewMovies extends StatefulWidget {
  PersistStorage storage; **// I MEAN THIS**
  GridViewMovies({Key key}) : super(key: key);
}

согласно вашему скриншоту ошибки, который вызывает метод sendData пустой объект, который является storage.sendData (....)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...