我一直在尝试将静态数据加载到ListViewBuilder中,我使用下面给出的相同代码成功实现了该功能,但现在无法正常工作。
LIST VIEW BUILDER
ListView.builder(
scrollDirection: Axis.horizontal,
shrinkWrap: true,
itemCount: allProducts.length==null ? 0 : allProducts.length,
itemBuilder: (BuildContext ctxt, int index) {
return new CustomCardProduct(
product:allProducts[index],
onPress: (){
);
},
);
},
),
USER.DART文件中存储的静态数据和类。
List<Product> allProducts= [
Product(title: 'Quran Classes',price: 5000,description: "Hello World",likes: 4,mainImage: 'assets/quranforkidssample.jpg',galleryImages: galleryImages,serviceType: 'Home Based',user: user1,category: categories[0]),
Product(title: 'Quran Classes',price: 5000,description: "Hello World",likes: 4,mainImage: 'assets/quranforkidssample.jpg',galleryImages: galleryImages,serviceType: 'Home Based',user: user1,category: categories[0]),
Product(title: 'Quran Classes',price: 5000,description: "Hello World",likes: 4,mainImage: 'assets/quranforkidssample.jpg',galleryImages: galleryImages,serviceType: 'Home Based',user: user1,category: categories[0]),
Product(title: 'Quran Classes',price: 5000,description: "Hello World",likes: 4,mainImage: 'assets/quranforkidssample.jpg',galleryImages: galleryImages,serviceType: 'Home Based',user: user1,category: categories[0]),
Product(title: 'Quran Classes',price: 5000,description: "Hello World",likes: 4,mainImage: 'assets/quranforkidssample.jpg',galleryImages: galleryImages,serviceType: 'Home Based',user: user1,category: categories[0]),
];
User user1= User(
id: 0,
name: 'User Name',
imageUrl: 'assets/momina.jpg',
cnicPicture: '',
contactNumber: '0335-2366331' ,
city: 'Karachi',
followers: 100,
following: 200,
rating: 2.5,
area: 'Defence',
);
List<Category> categories=[
Category(name: 'Education',icon: FontAwesomeIcons.pen),
Category(name: 'Education',icon: FontAwesomeIcons.hackerNews),
Category(name: 'Education',icon: FontAwesomeIcons.pen),
Category(name: 'Education',icon: FontAwesomeIcons.pen),
Category(name: 'Education',icon: FontAwesomeIcons.pen),
Category(name: 'Education',icon: FontAwesomeIcons.pen),
Category(name: 'Education',icon: FontAwesomeIcons.pen),
];
List<String> galleryImages = [
'assets/quranforkidssample.jpg',
'assets/quranforkidssample.jpg',
'assets/quranforkidssample.jpg',
'assets/quranforkidssample.jpg',
];
class User {
final int id;
final String name;
final String imageUrl;
final String cnicPicture;
final String contactNumber;
final String city;
final String email;
final int followers;
final int following;
final List<Product> productList;
final double rating;
final String area;
User({this.area,this.id,this.name, this.imageUrl, this.cnicPicture, this.contactNumber, this.city, this.email, this.followers, this.following, this.productList, this.rating});
}
class Product{
final String title;
final int price;
final String description;
final Category category;
final int likes;
final User user;
final String mainImage;
final List<String> galleryImages;
final serviceType;
Product({this.serviceType,this.title, this.price, this.description, this.category, this.likes, this.user, this.mainImage, this.galleryImages});
}
class Category{
final String name;
final IconData icon;
Category({this.name, this.icon});
}
加载应用程序后,在红色框中显示错误。说在初始化期间读取静态变量“所有产品”。我不想在单独的文件夹中调用此数据文件,因为我将通过构造函数传递数据我的allProduct对象列表为null!但是为什么???
您需要做的就是在ListView.builder中更改为allProducts.data [index]而不是allproducts [index],并且将allProducts.data.length替换为allProducts.length。
ListView.builder(
scrollDirection: Axis.horizontal,
shrinkWrap: true,
itemCount: allProducts.data.length==null ? 0 : allProducts.data.length,
itemBuilder: (BuildContext context, int index) {
return new CustomCardProduct(
product:allProducts.data[index],
onPress: (){
);
},
);
},
),