【发布时间】:2020-08-16 15:21:57
【问题描述】:
我正在开发一个 Flutter 项目并使用 Sqflite 数据库。我已经设法将数据保存在 db 中,我正在尝试显示保存在 sqllite 中的数据,我正在尝试使用 listview builder 但它抛出错误The getter 'length' was called on null.。但我从数据库中获取数据没有问题
错误
The following NoSuchMethodError was thrown building FutureBuilder<List<CartModel>>(dirty, state: _FutureBuilderState<List<CartModel>>#31bfe):
The getter 'length' was called on null.
Receiver: null
Tried calling: length
从数据库中检索数据以查看
Widget Coupon_List() {
return FutureBuilder<List<CartModel>>(
future: productFromDatabase(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return new ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (context, index) {
return new Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
new Text(snapshot.data[index].boon_name,
style: new TextStyle(
fontWeight: FontWeight.bold, fontSize: 18.0)),
new Divider()
]);
});
} else if (snapshot.data.length == 0) {
return new Text("No Data found");
}
return new Container(
alignment: AlignmentDirectional.center,
child: new CircularProgressIndicator(),
);
},
);
}
获取要查看的数据库函数
Future<List<CartModel>> productFromDatabase() async {
Future<List<CartModel>> product = dbHandler.getCartList();
return product;
}
用于检索数据的 DbHelper 类
Future<List<CartModel>> getCartList() async {
List<Map> list = await _db.rawQuery('SELECT * FROM Cart');
List<CartModel> productList = new List();
for (int i = 0; i < list.length; i++) {
var data=list[i];
productList.add(CartModel.fromJson(data));
}
print(productList.length);
return productList;
}
这是我从 db 获取的数据
[{id: 1, boon_id: 3, product_id: 15, boon_name: iPhone 11 Pro Max, product_name: Boon Polo Tshirt, product_price: ₹599.00, quantity: 0, product_size: M, product_color: Blck, product_image: https://www.boonways.com//images/gallery/1593989052.jpg, boon_image: https://www.boonways.com//images/coupon/coupon_15_20200706040643.jpg, percentage: 14.43}]
【问题讨论】: