我想要一个应用程序与卖家,买家和卖家的产品。
我有一个名为product的类,一个名为seller的类和一个名为products provider的类,这两个类都被写下来。我在那里写了所有的类。
类产品:
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});
}ProductsProvider类:
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)中只能访问静态成员”,我得到了这个错误。
所以我写下了"static“,错误是这样修复的:
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();
}
}但我担心,通过静态更改,卖家不能再添加新项目,编辑项目或删除项目。我说错了吗?
发布于 2020-04-29 03:10:03
我认为你在错误的变量( _profile )的字体中添加了静态变量,它应该放在_items前面,因为你在初始化其他变量时使用了_items,比如_profile。
静态变量意味着类变量,意味着无论您为该类创建多少对象,但该变量将在所有对象之间共享。你可以做所有的事情,如添加项目,删除项目或编辑。
此外,您不能使用object访问_items变量。你可以使用类名来访问它。
了解有关Static的更多信息
https://stackoverflow.com/questions/61487760
复制相似问题