在初始化期间读取静态变量| Flutter



我一直在尝试将静态数据加载到ListViewBuilder中。我使用下面给出的相同代码成功地实现了该功能,但现在它不起作用了。

列表视图生成器

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: (){
);
},
);
},
),

静态数据和类存储在用户中。飞镖锉

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});
}

应用程序加载后,会在红色框中显示一个错误。说在初始化期间读取静态变量"all products"。我不想在单独的文件夹中调用这个数据文件,因为我将通过构造函数传递数据我的allProduct对象列表为空!但是为什么???

您所需要做的就是在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: (){
);
},
);
},
),

最新更新