-2

我有一个班级可以使用 hive,我想收到一个我正在使用的 api 列表,但是当我打电话给我的班级获得一个列表时,它给了我这个错误 在此处输入图像描述

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:
          }
        });
  }

并且因为该类仅服务于我调用我的函数但给我带来了那个错误,有什么想法可以解决这个问题吗?

4

1 回答 1

0

您是否在小部件上初始化了存储对象,我在您在此处添加的代码中的任何地方都看不到初始化。

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

根据您的错误屏幕截图, sendData 方法正在调用一个空对象,即 storage.sendData(....)

于 2020-04-08T15:50:01.053 回答