list - Dart Global 类返回 Null 列表
问题描述
class Cart {
static final Cart _instance = Cart._internal();
List<Food> _listOfFood = [];
factory Cart([List food]) => _instance;
Cart._internal() {
this._listOfFood = [];
}
void addItems(Food food) {
print(this.listOfFood);
}
当我选择“addItems”时,它返回 null。
解决方案
我不确定您尝试使用此代码示例实现什么目标:
- 似乎您正在实现单例设计模式,但您为工厂提供了一个参数。当您有以下代码时,您期望会发生什么?
final cart1 = Cart();
cart1.addItems(food1);
cart2.addItems(food2);
final cart2 = Cart([food3, food4]);
购物车现在包含什么?
为什么要初始化
_listOfFood
两次[]
?您的方法
void addItems(Food food)
(可能应该被称为addItem
oraddFood
)除了打印列表之外什么都不做。所以,是的,它什么也不返回。
这是此类 Cart Singleton 类的最小工作示例:
void main() {
final cart1 = Cart();
cart1.addFood(Food(name: 'banana'));
cart1.addFood(Food(name: 'apple'));
cart1.addFood(Food(name: 'orange'));
final cart2 = Cart();
cart2.addFood(Food(name: 'mango'));
print(cart1); // Your cart contains: banana, apple, orange, mango
print(cart2); // Your cart contains: banana, apple, orange, mango
}
class Cart {
static final Cart _instance = Cart._internal();
List<Food> _listOfFood = [];
factory Cart() => _instance;
Cart._internal();
void addFood(Food food) {
_listOfFood.add(food);
}
String toString() => 'Your cart contains: ${_listOfFood.join(', ')}';
}
class Food {
final String name;
const Food({required this.name});
String toString() => name;
}
注意:在 Flutter 中,与使用 Singleton 全局类相比,您有更好的方法来实现应用程序的 State。查看所有状态管理方法。
推荐阅读
- git - 如何在 git 日志中查询 Co-Authored-By
- php - 将选项值设置为选择文本
- javascript - 我的 Javascript 中的 HTML 表单验证器似乎不起作用
- php - 如何在 php 中将音乐文件发布到 sql 数据库?
- laravel - 从视图中加载图像的最佳实践
- google-sheets - Google Sheets yahoo Finance importXML 文本不是 td 数据
- javascript - D3“固定”图表中的条形值?
- html - div问题 我使用的计量单位是否正确?
- python - 如何在 Pytorch 中将神经网络划分为子网络?
- php - 添加 Yii2 测验时未找到“CWebModule”类