Flutter:我如何在列表中实现列表?错误:在initializer.dart(implicit_this_refer



我想要一个包含卖家、买家和卖家产品的应用程序。

我有一个名为product的类,一个名为主seller的类和一个名为辅products provider的类,这两个类都写在其中。我把所有的课都写在下面。

class产品:

import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart';
class Product with ChangeNotifier {
final String id;
final String rubric;
final Color rubricColor;
final String title;
final String imagePath;
final String description;
final double price;
bool isFavouriteProduct;
Product({
@required this.id,
@required this.title,
@required this.rubric,
@required this.rubricColor,
this.imagePath = 'assets/images/defaultpicture.png',
this.description,
@required this.price,
this.isFavouritProduct = false,
});
}

类别卖家:

import 'package:flutter/material.dart';
import '**/providers/product.dart';
class Seller with ChangeNotifier {
final String id;
final String title;
bool isFavourite;
final List<Product> items;

Seller({this.id, this.isFavourite, this.items, this.title});
}

类别产品提供商:

import 'package:flutter/material.dart';
import '***/providers/seller.dart';
import './product.dart';
class ProductsProvider with ChangeNotifier{
List<Seller> _profile = [
Seller(id: '1', isFavourite: false, title: 'Blabla-store', items: _items)
];
List<Product> _items = [
Product(
id: 'a1',
title: 'blablastore',
rubric: '',
rubricColor: Colors.orange,
description: 'blablabla',
imagePath: 'assets/images/***.jpeg',
price: 200000.00,
),
Product(
id: 'a2',
title: 'blablastore2',
rubric: '',
rubricColor: Colors.blue,
description:
'blablabla,
imagePath: 'assets/images/nah.jpg',
price: 49.99,
),
Product(
id: 'a3',
title: 'Mir fällt nix ein',
rubric: '',
rubricColor: Colors.redAccent,
description: 'weiß nicht',
price: 22.22,
)
];
List<Product> get items{
return [..._items];
}
Product findById(String id){
return _items.firstWhere((product)=> product.id == id);
}
void addProduct(){
notifyListeners();
}
}

但是在ProductsProvider类中,我通过items属性得到了这个错误->"在initializers.dart(implicit_this_reference_in_initializer(中只能访问静态成员">

所以我写下"静态",错误是这样修复的:

import 'package:flutter/material.dart';
import '***/providers/seller.dart';
import './product.dart';
class ProductsProvider with ChangeNotifier{
List<Seller> _profile = [
Seller(id: '1', isFavourite: false, title: 'Blabla-store', items: _items)
];
static List<Product> _items = [
Product(
id: 'a1',
title: 'blablastore',
rubric: '',
rubricColor: Colors.orange,
description: 'blablabla',
imagePath: 'assets/images/turkitchdoener.jpeg',
price: 200000.00,
),
Product(
id: 'a2',
title: 'blablastore2',
rubric: '',
rubricColor: Colors.blue,
description:
'blablabla,
imagePath: 'assets/images/nah.jpg',
price: 49.99,
),
Product(
id: 'a3',
title: 'Mir fällt nix ein',
rubric: '',
rubricColor: Colors.redAccent,
description: 'weiß nicht',
price: 22.22,
)
];
List<Product> get items{
return [..._items];
}
Product findById(String id){
return _items.firstWhere((product)=> product.id == id);
}
void addProduct(){
notifyListeners();
}
}

但我担心,通过使用static进行更改,卖家将无法再添加新项目、编辑项目或删除项目。我错了吗?

我认为您在错误变量(_profile(的字体中添加了static,它应该在_items前面,因为您在初始化其他变量(如_profile的(时使用了_items。

静态变量意味着类变量,意味着除了该变量之外,您为该类创建的任何数量的对象都将在所有对象之间共享。你可以做所有的事情,比如添加、删除或编辑。

此外,您不能使用object访问_items变量。您可以使用类名访问它。

签出更多关于静态的信息

最新更新