【问题标题】:How to solve Non-nullable instance field 'catalog' must be initialized. Try adding an initializer expression,?如何解决不可为空的实例字段“目录”必须初始化。尝试添加初始化表达式,?
【发布时间】:2021-06-06 13:26:15
【问题描述】:

我收到一个错误 必须初始化不可为空的实例字段“目录”。 尝试添加初始化表达式,或在此构造函数中添加字段初始化,或将其标记为“延迟”

import 'package:first_app/models/cart.dart';
import 'package:first_app/models/catalog.dart';
import 'package:velocity_x/velocity_x.dart';

class MyStore extends VxStore {
  CatelogModel catalog;
  CartModel cart;

  MyStore() {  #Getting error here#
    catalog = CatelogModel();
    cart = CartModel();
    cart.catalog = catalog;
  }
}

【问题讨论】:

  • 将您的目录声明为可为空的 CatelogModel CatelogModel? catalog;

标签: flutter dart-null-safety


【解决方案1】:

您需要初始化属性CatelogModel catalogCartModel cart 或将它们标记为延迟。现在它抱怨你已经声明它们不应该为空,但你没有在构造函数中初始化它们。

所以你可以将它们标记为迟到

  class MyStore extends VxStore {
       late CatelogModel catalog;
       late CartModel cart;

       MyStore() {  #Getting error here#
          catalog = CatelogModel();
          cart = CartModel();
          cart.catalog = catalog;
       }
   }

或初始化它们。

class MyStore extends VxStore {
  CatelogModel catalog;
  CartModel cart;

  MyStore()
      : catalog = CatelogModel(),
        cart = CartModel(){
          cart.catalog = catalog;
        }
}

【讨论】:

  • 感谢后期关键字工作。但是当我尝试初始化它们时,它给了我一个错误,即无法在初始化程序中访问实例成员“目录”。尝试用不同的表达式替换对实例成员的引用。
  • 是的,那是因为它不是属性。我会更新答案来表达新的变化。
【解决方案2】:

必须初始化不可为空的实例字段“audioPlayer”。 尝试添加初始化表达式,或在此构造函数中添加字段初始化,或将其标记为“延迟”。

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2022-01-25
  • 2021-09-14
  • 2021-12-15
  • 1970-01-01
  • 2023-01-02
  • 2021-07-06
  • 1970-01-01
  • 2021-09-14
  • 2021-09-24
相关资源
最近更新 更多