【发布时间】:2022-08-20 20:03:39
【问题描述】:
product_list_screen.dart
import \'package:flutter/material.dart\';
import \'../blocs/cart_bloc.dart\';
import \'../models/cart.dart\';
class ProductListScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(\"eCommerce\"),
actions: [
IconButton(
icon: Icon(Icons.shopping_cart),
onPressed: () => Navigator.pushNamed(context, \"/cart\"),
)
],
),
body: buildProductList(),
);
}
buildProductList() {
return StreamBuilder(
initialData: productBloc.getAll(),
stream: productBloc.getStream,
builder: (context, snapshot) {
return snapshot.data.length > 0 //error
? buildProductListItems(snapshot)
: Center(
child: Text(\"No data\"),
);
},
);
}
buildProductListItems(AsyncSnapshot<Object?> snapshot) {
return ListView.builder(
itemCount: snapshot.data.length, //error
itemBuilder: (BuildContext context, index) {
var list = snapshot.data;
return ListTile(
title: Text(list[index].name), //error
subtitle: Text(list[index].price.toString()), //error
trailing: IconButton(
icon: Icon(Icons.add_shopping_cart),
onPressed: () {
cartBloc.addToCart(Cart(List[index], 1)); //error
},
),
);
});
}
}
属性 \'length\' 不能被无条件访问,因为接收者可以是 \'null\'。 (文档)尝试使访问有条件(使用 \'?.\')或向目标添加空检查(\'!\')。
我使用了 \'!\' 或 \'?\' 但它没有用。你能帮助我吗?谢谢。
-
这有什么好运气吗?