【问题标题】:Non-nullable instance field ''" must be initialized必须初始化不可为空的实例字段“””
【发布时间】:2021-08-21 10:15:31
【问题描述】:

我正在学习颤振并尝试将 API 与其集成,但我遇到了某种错误,任何人都可以在这里查看并告诉我做错了什么。

class _HomePageState extends State<HomePage> {
   Future<News> _newsModel; //getting error here 1*
  @override
  Future<void> initState() async {
    super.initState();
    var _newsModel = await API_Manager().getNews();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("News App"),
      ),
      body: Container(
        child: FutureBuilder(
          future: _newsModel,
          builder: (context, snapshot) {
            if (snapshot.hasData) {
              return (ListView.builder(itemBuilder: (context, index) {
                return Container(
                  height: 100,
                  color: Colors.red,
                );
              }));
            } else {
              return CircularProgressIndicator();
            }
          },
        ),
      ),
    );
  }
}

1*) 编译器给出此错误“必须初始化不可为空的实例字段 '_newsModel'。 尝试添加初始化表达式,或初始化它的生成构造函数,或将其标记为“迟到”。

我也尝试过给迟到的错误来自编辑器,但当应用程序运行时它再次出现。我正在尝试从 API 获取一些消息并在 UI 中显示它们

【问题讨论】:

    标签: flutter flutter-layout


    【解决方案1】:

    该错误表示_newsModel 字段尚未初始化。如果您想稍后初始化该字段,则必须使用 late 关键字标记该字段。

    从您的代码中,您没有初始化该字段,而是在initState 上声明了名为_newsModel 的新变量。尝试删除 var 关键字

    Future<void> initState() async {
      super.initState();
      _newsModel = await API_Manager().getNews();
    }
    

    【讨论】:

      猜你喜欢
      • 2021-07-06
      • 2021-09-14
      • 2021-09-24
      • 2021-10-11
      • 2021-08-27
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多