flutter - Flutter StatefulWidget 中的变量范围

标签 flutter statefulwidget

我正在尝试访问 build() 中的 moviesList,结果如下。真正的问题是什么?

flutter: ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
flutter: The following NoSuchMethodError was thrown building MyListScreen(dirty, state:
flutter: _MyListScreenState#21007):
flutter: The getter 'results' was called on null.
flutter: Receiver: null
flutter: Tried calling: results

代码片段如下:

class _MyListScreenState extends State<MyListScreen> {

  MoviesList moviesList;

  _getLatestMovies() {
    APIService.getMoviesNowPlaying().then((response) {
      setState(() {
        final jsonData = json.decode(response.body);
        moviesList = new MoviesList.fromJson(jsonData);
        // moviesList(new MoviesList.fromJson(jsonData));

        for (var i = 0; i < moviesList.results.length; i++) {
          print(moviesList.results[i].title);
        }
      });
    });
  }

  @override
  initState() {
    super.initState();
    _getLatestMovies();
  }

  @override
  Widget build(context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("View Title"),
      ),
      body: ListView.separated(
        padding: EdgeInsets.zero,
        itemCount: moviesList.results.length,
        itemBuilder: (context, index) {
          // return ListTile(title: Text(moviesList.results[index].title));
        },
        separatorBuilder: (context, index) {
          return Divider();
        },
      ));
  }
}

最佳答案

使用

itemCount: moviesList != null ? moviesList.results.length : 0,

您的 build()moviesList 初始化之前被调用,所以在这里我们首先检查 null,如果 null 使用 0 作为 itemCount 否则使用它的长度。

关于flutter - Flutter StatefulWidget 中的变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56795355/

相关文章:

flutter - 如何在flutter中使用switch语句在侧面导航栏上执行注销?

flutter - Flutter StatefulWidget不更新数据

dart - 了解 StatefulWidget 在 Flutter 中的使用

json - 在Dart中解析没有名称的json数组

dart - 安装 flutter 时出错

flutter - PickedImage 为空

flutter | Dio Package ...在后台下载大文件

dart - 不要让 PageView 居中 - Flutter

flutter - StatefulWidget 中的 State 对象何时销毁?