不能无条件调用运算符,因为接收者可以为空

Operator can't be unconditionally invoked because the receiver can be null

我正在尝试向我的应用程序添加购物功能。我正在尝试使用 ChangeNotifier 添加购物车商品计数器,但收到错误消息 'error: The operator '-' can't be unconditionally invoked because the receiver can be 'null'。我是编码新手,所以即使在研究了 SO 之后我也无法找到解决方案。在此先感谢您提供的任何帮助。

class EcommerceApp {

  static late SharedPreferences sharedPreferences;
  static String collectionUser = "users";
  static String collectionOrders = "orders";
  static String userCartList = 'userCart';
  static String subCollectionAddress = 'userAddress';

class CartItemCounter extends ChangeNotifier {
  final int _counter = EcommerceApp.sharedPreferences
      .getStringList(EcommerceApp.userCartList)
      ?.length - 1;

  int get count => _counter;
}

    
    }

getStringList()的return值有可能是null。 Dart 的 Null-safety 不允许这样做。您可以使用 ?? 运算符来确保另一个值是 null。我认为这可能有效:

class CartItemCounter extends ChangeNotifier {
  final int _counter = (EcommerceApp.sharedPreferences
      .getStringList(EcommerceApp.userCartList)
      .length ?? 0) - 1;

  int get count => _counter;
}