【问题标题】:Reading static variable during its initialization | Flutter在初始化期间读取静态变量 |扑
【发布时间】:2020-02-17 20:36:30
【问题描述】:

我一直在尝试将静态数据加载到 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: (){

                      );
                    },
                  );
                },
            ),

存储在 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 对象列表为空!但是为什么???

【问题讨论】:

  • 你能添加完整的代码来模拟你的问题吗?

标签: flutter dart flutter-layout


【解决方案1】:

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

                  );
                },
              );
            },
        ),

【讨论】:

  • 但是在导入时我也删除了也可以正常工作的 package 关键字。
猜你喜欢
  • 2011-08-22
  • 2010-12-22
  • 2017-05-13
  • 1970-01-01
  • 1970-01-01
  • 2010-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多